Linq语言集成查询
Linq就是Language Integrated Query的縮寫,即語言集成查詢,是微軟在.Net? 3.5中提出的 一項新技術, Linq主要包含4個組件——Linq To Objects、Linq To XML、Linq To DataSet 和Linq To SQL。
我們操作linq一般來說有兩種方式,一種是lamdba表達式+擴展方法,還有一種就是表達式,表達式方式跟sql差不多,區(qū)別就是我們這是按照sql執(zhí)行順序來的,比如:sql寫法就是select row from tb,表達式的寫法就是 from tb select row這樣
下面我們來演示lamdba、表達式和普通方法的區(qū)別:
static void Main(string[] args) {var list = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//lamdba 擴展方法var counts1 = list.Where(t => t % 2 == 0).Count();//表達式var counts2 = (from t in listwhere t % 2 == 0select t).Count();//表達式var counts3 = 0;for (int i = 0; i < list.Length; i++){if (list[i] % 2 == 0){counts3++;}}Console.WriteLine("lamdba方式輸出:{0}", counts1);Console.WriteLine("表達式方法輸出:{0}", counts2);Console.WriteLine("一般方式輸出:{0}", counts3);Console.Read(); } lamdba方式輸出:5 表達式方法輸出:5 一般方式輸出:5查詢操作符(擴展方法+lambda),擴展方法? 擴展的事IEnumerable<T>接口。所以linq的基礎都是集合要繼承IEnumerable<T>。
過濾:where,Find,FindAll,FindLast,First<T>,FirstOrDefault<>
統(tǒng)計函數(shù):Count,MIn,Sum,Max
排序:OrderBy,OrderByDescending
跳過前面多少條數(shù)據(jù)取余下的數(shù)據(jù):SKIP,如:list.Skip(rows * (pages - 1)),就是我們一般用的分頁了
從開始起獲取指定數(shù)量的數(shù)據(jù):TAKE
模糊匹配:Contains
分組:GroupBy???????
連接查詢:Join
投影:select(select t或者select(t=>new{t.1,t.2}))
2,查詢表達式
From [type] id in source
[join [type] id in source? on expr equals expr [into subGroup]]
[from [type] id in source|let id=expr | where condition]
[orderby ordering,ordering,ordering,ordering...]
select select expr | group expr by key
[into id query]
?tips:type是可選的,id是數(shù)據(jù)源集合中的一項,source是數(shù)據(jù)源集合,?? 其實是在一直循環(huán)source,每次循環(huán)把值放入select后面
?
expr表示一個表達式,subGroup是一個臨時變量,繼承自IGroup,代表一個分組。
可以有多個form,多個where,set指定臨時變量
可以有0-多個排序 orderby a descing orderby b。 orderby a descing ,b,c
select? new投影(匿名類,返回的類型用var?? 因為他生成的時候一后臺定義的類型集合),group 類型 by 具體屬性。標準linq? 前面一般寫一個var(不確定類型)。????????????? 一個查詢表達式必須以select或者group by結束。select后跟要檢索的內容。group by 是對檢索的內容進行分組
group by 他后面只能跟 into is as 關鍵字,常用into 關鍵字放入臨時數(shù)據(jù)源 然后在select 投影。
into放入臨時數(shù)據(jù)源
Let 設置變量
注意:這種查詢表達式會編譯成上面的擴展方法+lambad。這種是一個語法糖。
總結
以上是生活随笔為你收集整理的Linq语言集成查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#结构体
- 下一篇: jquery插件分类与编写详细讲解