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

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、荷塘網(wǎng)站維護(hù)、網(wǎng)站推廣。
什么是Linq to sql
Linq to sql(或者叫DLINQ)是LINQ(.NET語(yǔ)言集成查詢)的一部分,全稱基于關(guān)系數(shù)據(jù)的 .NET 語(yǔ)言集成查詢,用于以對(duì)象形式管理關(guān)系數(shù)據(jù),并提供了豐富的查詢功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等組成了強(qiáng)大的LINQ。
要學(xué)好LINQ查詢語(yǔ)法,就不得不先理解C# 3.0的一些新特性,下面一一簡(jiǎn)單介紹。
Linq to sql隱含類型局部變量
- var age = 26;
- var username = "zhuye";
- var userlist = new [] {"a","b","c"};
- foreach(var user in userlist)
- Console.WriteLine(user);
純粹給懶人用的var關(guān)鍵字,告訴編譯器(對(duì)于CLR來(lái)說(shuō),它是不會(huì)知道你是否使用了var,苦力是編譯器出的),你自己推斷它的類型吧,我不管了。但是既然讓編譯器推斷類型就必須聲明的時(shí)候賦值,而且不能是null值。注意,這只能用于局部變量,用于字段是不可以的。
Linq to sql匿名類型
- var data = new {username = "zhuye",age = 26};
- Console.WriteLine("username:{0} age:{1}", data.username, data.age);
匿名類型允許開發(fā)人員定義行內(nèi)類型,無(wú)須顯式定義類型。常和var配合使用,var用于聲明匿名類型。定義一個(gè)臨時(shí)的匿名類型在LINQ查詢句法中非常常見,我們可以很方便的實(shí)現(xiàn)對(duì)象的轉(zhuǎn)換和投影。
Linq to sql擴(kuò)展方法
- public static class helper
- {
- public static string MD5Hash(this string s)
- {
- return System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(s,"MD5");- }
- public static bool In(this object o, IEnumerable b)
- {
- foreach(object obj in b)
- {
- if(obj==o)
- return true;
- }
- return false;
- }
- }
- // 調(diào)用擴(kuò)展方法
- Console.WriteLine("123456".MD5Hash());
- Console.WriteLine("1".In(new[]{"1","2","3"}));
很多時(shí)候我們需要對(duì)CLR類型進(jìn)行一些操作,苦于無(wú)法擴(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)屬性
- public class Person
- {
- public string username { get; protected set; }
- public int age { get; set; }
- public Person()
- {
- this.username = "zhuye";
- }
- }
- Person p = new Person();
- //p.username = "aa";
- Console.WriteLine(p.username);
意義不是很大,純粹解決機(jī)械勞動(dòng)。編譯器自動(dòng)為你生成get、set操作以及字段,并且你不能使用字段也不能自定義get、set操作,不過(guò)你可以分別定義get和set的訪問(wèn)級(jí)別。
文章題目:Linqtosql全面剖析
標(biāo)題URL:http://m.5511xx.com/article/cdisips.html


咨詢
建站咨詢
