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类空间下