linq to entity 基础
部分摘抄 ?http://www.cnblogs.com/nikymaco/archive/2012/07/11/2585594.html
linq(語言集成查詢)在對象領域和數據領域之間架起了一座橋梁。
?一.每個LINQ語句都以from作為開頭,以select作為結束.
1.語法關鍵字
from?: ? ? ?指定數據源和范圍變量(類似于迭代變量)。
where: ? ? 根據一個或多個由邏輯“與”和邏輯“或”運算符(&& 或 ||)分隔的布爾表達式篩選源元素。
select: ? ?指定當執行查詢時返回的序列中的元素將具有的類型和形式。
group: ? ?按照指定的鍵值對查詢結果進行分組。
into: ? ? ? 提供一個標識符,它可以充當對 join、group 或 select 子句的結果的引用。
orderby: 基于元素類型的默認比較器按升序或降序對查詢結果進行排序。
join: ? ? ? 基于兩個指定匹配條件之間的相等比較來聯接兩個數據源。
let: ? ? ? ? 引入一個用于存儲查詢表達式中的子表達式結果的范圍變量。
in: ? ? ? ? ?join 子句中的上下文關鍵字。
on: ? ? ? ? join 子句中的上下文關鍵字。
equals: ? join 子句中的上下文關鍵字。
by: ? ? ? ? group 子句中的上下文關鍵字。
ascending:orderby 子句中的上下文關鍵字。
descending:orderby 子句中的上下文關鍵字。
2.linq常用到的特性:
①. 匿名類型:
匿名類型提供了一種方便的方法,可用來將一組只讀屬性封裝到單個對象中,而無需首先顯式定義一個類型。?類型名由編譯器生成,并且不能在源代碼級使用。?每個屬性的類型由編譯器推斷。例如:var?obj =?new?{A="a", B="b"}; 而LINQ則可以為?var?nums =?from?obj?in?objs?select?new?{obj.A, obj.B}
?3.?LINQ 查詢操作包含三個操作:獲得一個或多個數據源、創建查詢并執行查詢。可以通過 LINQ 查詢實現?IEnumerable?泛型接口或?IQueryable?泛型接口的數據源。?ObjectQuery?泛型類(可實現?IQueryable?泛型接口)的實例可充當 LINQ to Entities 查詢的數據源。
①.?IEnumerable<T>?泛型接口:公開枚舉器,該枚舉器支持在指定類型的集合上進行簡單迭代。IEnumerable<T> nums =?from?n?in?nums?where?....?orderby...?select...
②.IQueryable?泛型接口:提供對數據類型已知的特定數據源的查詢進行計算的功能。
4.查詢:
?
?
下面是基本操作:
內聯查詢
?
var query= from obj1 in objs1join obj2 in objs2 on obj1.ID equals obj2.IDselect new { A= obj1.Property, B = obj2.Property };?
?左外聯查詢
?
var query = from obj1 in objs1join obj2 in objs2 on obj1.ID equals obj2.Obj1ID into gfrom subpet in g.DefaultIfEmpty()select new { P1 = obj1.P1, P2 = (subpet == null ? null : subpet.P2 ) };?
分組查詢
?
var query = from obj in objsgroup obj by obj.PropertyA into gorderby g.Keyselect g;?
? ? ? 注意,在此示例里,關鍵字 into 不是必須的,使用?into?時,必須繼續編寫該查詢,并最終用一個?select?語句或另一個?group?子句結束該查詢。
? ? ?LINQ的涉及應用如:linq to sql, lint to entites, linq to xml, linq to dataset 等等
?5.linq的延遲加載:延遲執行意味著表達式的計算延遲,直到真正需要它的實現值為止。
?
View Code 1 // 已知一個序列 2 var array = new int[] {1, 2, 3}; 3 4 // 編寫一段LINQ表達式獲得一個序列變量query 5 // 注意,這個變量僅僅是一個代理,在執行編譯的時候,編譯器檢查完 6 // 該代碼的正確性后直接跳過,不再理會 7 var query = from arr in array 8 where arr > 1 9 select arr; 10 11 // 調用上述序列變量query,此時上述的LINQ表達才會執行。注意此時已是在 12 // 編譯器Runtime 的情況下執行 13 foreach(var q in query) 14 Console.WriteLine(q.ToString());?
??
轉載于:https://www.cnblogs.com/bfy-19/archive/2012/07/18/2597381.html
總結
以上是生活随笔為你收集整理的linq to entity 基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汉王将推电纸书 Clear:搭载 7 英
- 下一篇: IList类转换成DataTable