1.LInq查詢,只要實現IEnumerable和IQueryable的都可以用Linq查詢,要使用Linq引用System.Linq,使用Linq to ado.net引用System.Data.Linq,還有xml引用system.xml .linq
用from子句指定數據源
用where子句指定篩選條件
格式:where expression
int[]ary = { 1, 6, 98, 15, 30, 60 };
varq1 = fromv1 in ary wherev1 > 15 selectv1;
varq2 = fromv2 in ary where(v2 > 10) && (v2 < 40)
select v2;
varq3 = fromv3 in ary where(v3> 10) || (v3 <40)
select v3;
下面顯示Linq中信息
用orderby排序
格式:orderbyexpression [sortType]
int[]ary = { 1, 6, 98, 15, 30, 60 };
var q1 = fromv1 inary orderbyv1 selectv1;
foreach (varqi1 inq1)
Console.Write("{0} ",qi1);
varq2 = fromv2 inary orderbyv2 descending
selectv2;
var q3 = from st in stAry
orderby st.Name.Length ascending,st.Agedescending
select st;
用group查詢分組
至於join請看《精通C#5.0與.NET4.5高級編程__LINQ、WCF、WPF和WF-PDF電子書下載 帶書籤目錄 完整版.pdf》
基於Linq的表達式查詢
2.Linq 查詢方法
在Linq中數據源和查詢結果都是IEnumrable<T>泛型接口和IQueryable<T>泛型接口,是對象,對象都有方法和屬性
具體例子請參考精通C#5.0中或者具體方法
Skip基於具體數字,二SkipWhile是基於表達式的
具體說一下Skip和Take的作用
//分頁,分頁大小4,分頁索引2,跳過前面8條,獲取後面4條 var ti = me.User.Skip(8).Take(4);
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);public staitc IEnumErable<TSource>Where(this IEnumrable<TSource> source,Func<TSource,int ,bool> predicate;
public delegate TResult Func<T1,T2,TResult> (T1 arg1,T2 atg2);//定義的泛型委託,泛型委託可以傳一個函數也可以傳一個拉姆表達式,有兩個重載
OrderBy和OrderByDescending一樣,重載中的一個參數是ICompare<TKey>
這兩個都是擴展方法,在靜態類Enumrable類空間下