EF-实体框架和Linq(2)

1.LInq查询,只要实现IEnumerable和IQueryable的都可以用Linq查询,要使用Linq引用System.Linq,使用Linq to ado.net引用System.Data.Linq,还有xml引用system.xml .linq

from子句指定数据源

1.数据源是实现泛型接口IEnumerble<T>IQueryable<T>的类对象。
2.IEnumerble<T>可以简单理解成一个包含多个元素的列表(或数据库中的表),可以用foreach遍历它的所有元素,从而轻松完成查询操作。
3.每个Linq查询都以from字句开始,from子句包括以下两个功能。
指定查询将采用的数据源
定义一个本地变量,表示数据源中的单个元素
fromlocalVar indataSource;

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]

element:是要进行排序的字段,它可以是数据源中的元素,也可以是对元素的操作结果。
sortType:可选参数,表示排序类型,包括升序(ascending)和降序(descending)两个可选值

示例

    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);

几个的交集union 并集Intersed 差集except,concat连接两个元素

public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> sourceFunc<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类空间下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章