自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linq to sql全面剖析

開發(fā) 后端
這里介紹Linq to sql(或者叫DLINQ)是LINQ(.NET語言集成查詢)的一部分,全稱基于關(guān)系數(shù)據(jù)的 .NET 語言集成查詢,用于以對(duì)象形式管理關(guān)系數(shù)據(jù),并提供了豐富的查詢功能。

Linq有很多值得學(xué)習(xí)的地方,這里我們主要介紹Linq to sql,包括介紹Linq to sql隱含類型局部變量等方面。

什么是Linq to sql

Linq to sql(或者叫DLINQ)是LINQ(.NET語言集成查詢)的一部分,全稱基于關(guān)系數(shù)據(jù)的 .NET 語言集成查詢,用于以對(duì)象形式管理關(guān)系數(shù)據(jù),并提供了豐富的查詢功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等組成了強(qiáng)大的LINQ。

要學(xué)好LINQ查詢語法,就不得不先理解C# 3.0的一些新特性,下面一一簡單介紹。

Linq to sql隱含類型局部變量

  1. var age = 26;  
  2.  
  3. var username = "zhuye";  
  4.  
  5. var userlist = new [] {"a","b","c"};  
  6.  
  7. foreach(var user in userlist)  
  8. Console.WriteLine(user); 

純粹給懶人用的var關(guān)鍵字,告訴編譯器(對(duì)于CLR來說,它是不會(huì)知道你是否使用了var,苦力是編譯器出的),你自己推斷它的類型吧,我不管了。但是既然讓編譯器推斷類型就必須聲明的時(shí)候賦值,而且不能是null值。注意,這只能用于局部變量,用于字段是不可以的。

Linq to sql匿名類型

  1. var data = new {username = "zhuye",age = 26};  
  2. Console.WriteLine("username:{0} age:{1}", data.username, data.age); 

匿名類型允許開發(fā)人員定義行內(nèi)類型,無須顯式定義類型。常和var配合使用,var用于聲明匿名類型。定義一個(gè)臨時(shí)的匿名類型在LINQ查詢句法中非常常見,我們可以很方便的實(shí)現(xiàn)對(duì)象的轉(zhuǎn)換和投影。

Linq to sql擴(kuò)展方法

  1. public static class helper  
  2. {  
  3. public static string MD5Hash(this string s)  
  4. {  
  5. return System.Web.Security.FormsAuthentication.
    HashPasswordForStoringInConfigFile(s,"MD5");  
  6. }  
  7. public static bool In(this object o, IEnumerable b)  
  8. {  
  9. foreach(object obj in b)  
  10. {  
  11. if(obj==o)  
  12. return true;  
  13. }  
  14. return false;  
  15. }  
  16. }  
  17. // 調(diào)用擴(kuò)展方法  
  18. Console.WriteLine("123456".MD5Hash());  
  19. Console.WriteLine("1".In(new[]{"1","2","3"})); 

很多時(shí)候我們需要對(duì)CLR類型進(jìn)行一些操作,苦于無法擴(kuò)展CLR類型的方法,只能創(chuàng)建一些helper方法,或者生成子類。擴(kuò)展方法使得這些需求得意實(shí)現(xiàn),同時(shí)也是實(shí)現(xiàn)LINQ的基礎(chǔ)。定義擴(kuò)展方法需要注意,只能在靜態(tài)類中定義并且是靜態(tài)方法,如果擴(kuò)展方法名和原有方法名發(fā)生沖突,那么擴(kuò)展方法將失效。

Linq to sql自動(dòng)屬性

  1. public class Person  
  2. {  
  3. public string username { get; protected set; }  
  4. public int age { get; set; }  
  5. public Person()  
  6. {  
  7. this.username = "zhuye";  
  8. }  
  9. }  
  10. Person p = new Person();  
  11. //p.username = "aa";  
  12. Console.WriteLine(p.username); 

意義不是很大,純粹解決機(jī)械勞動(dòng)。編譯器自動(dòng)為你生成get、set操作以及字段,并且你不能使用字段也不能自定義get、set操作,不過你可以分別定義get和set的訪問級(jí)別。

【編輯推薦】

  1. Linq結(jié)果集形狀概述
  2. Linq存儲(chǔ)過程返回詳解
  3. Linq調(diào)用LoadProducts方法
  4. Linq使用數(shù)據(jù)表簡單描述
  5. Linq對(duì)象引用簡單介紹
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-09-17 13:15:20

LINQ查詢

2009-09-18 17:17:58

LINQ模型

2009-09-11 12:13:40

LINQ to SQL

2009-09-07 16:25:14

Linq To SQL

2009-09-08 16:20:12

LINQ to SQL

2009-09-16 09:56:42

LINQ to SQL

2009-09-17 15:22:38

LINQ to SQL

2009-09-15 10:59:10

LinQ to SQL

2009-09-10 14:37:57

LINQ匿名類型

2009-09-16 16:59:05

LINQ to XML

2009-09-09 16:21:31

Linq使用sqlme

2009-09-14 10:13:02

LINQ查詢操作

2009-09-14 15:12:40

LINQ to XML

2009-09-18 16:20:36

LINQ基礎(chǔ)

2009-09-16 10:38:43

LINQ查詢

2009-09-16 17:21:53

LINQ遍歷

2009-09-09 13:39:05

Linq用戶定義函數(shù)

2009-09-14 10:35:15

Linq內(nèi)部執(zhí)行原理

2009-09-08 15:39:13

Linq使用Inser

2009-09-15 14:52:15

linq級(jí)聯(lián)刪除
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)