asp.net MVC + linq to Entity简单教程(四)linq to Entity查询中其它方法的使用

原创 2012年03月29日 22:39:41
在前面我们说到了,简单的列表显示,下面我们来介绍一下,一些其它的属性。

  1, order by 的使用

   在sql语句中,order by 语句是经常使用的。一般来说,它一般和top配对使用。这里我们介绍一下linq to Entity中如何使用order by

            一般正常的sql语句应该是   

         select top 10 * from table order by id desc

          在linq to Entity中的写法是

   

      //这里要注意的一点是这里没有top 10的功能
      var stu = from s in newEtrain.ETrain_students
                     where s.schoolcode == schoolcode && s.sortcode == sortcode
                     orderby s.studentID descending
                     select s;
  //如果想加上top 10的功能,我们就要用到Take这个方法了,这个方法,一般情况下还会与Skip方法连用,用于分页  
  var stu = (from s in newEtrain.ETrain_students
                     where s.schoolcode == schoolcode && s.sortcode == sortcode
                     orderby s.studentID descending
                     select s).Take(10);

//这里要注意一点的是,orderby可以独立使用,可是Take却必须要和orderby合用,不然会报错。

  如果我是有二个字段要进行排充怎么办呢,只要用逗号隔开就行了,
  下面就是按studentID的倒排和学校名字正排
  var stu = (from s in newEtrain.ETrain_students
                     where s.schoolcode == schoolcode && s.sortcode == sortcode
                     orderby s.studentID descending,s.schoolname
                     select s).Take(10);


     2, Distinct的使用

  Distinct一般用来取唯一性数据

  sql语句如下:

  SELECT DISTINCT schoolcode,stu_name FROM ETrain_students
  linq to Entity的写法就很意思了。要写在外面,这里说明一下,我这里用到的是最简单的单字段方法,如果要多字段比较,就得重载一下他的方法。这个在以后会提到

  

var stu = (from s in newEtrain.ETrain_students
                     where s.schoolcode == schoolcode && s.sortcode == sortcode
                     select s.stu_name).Distinct();
      只所以把Distinct拿到这里说,是因为Distinct在与orderby联合使用的时候,会有一个顺序问题。

  

//这样写,你会发现orderby根本就没有起作用
var stu = (from s in newEtrain.ETrain_students
                     where s.schoolcode == schoolcode && s.sortcode == sortcode
                     orderby s.studentID ,s.schoolname
                     select s.stu_name).Distinct();

//为什么会这样呢,还记得上一节中,我们提到的sql运行顺序呢。distinct正常的执行顺序是在orderby之前,所以正确的写法是
var stu=(from s in newEtrian.ETrain_students
             where s.schoolcode==schoolcode && s.sortcode==sortcode
             select s.stu_name).Distinct().Orderby(p=>p.studentID);

  把顺序变一下就好了,这里面的OrderBy()上正排序,.OrderByDescending()是用来倒排它是二个方法。这里有一个问题如果我有二个排序字段怎么办。linq to Entity给出了一个很有意思的方法orderby().thenby()。它是先按orderby进行排序之后,再按thenby进行排序

     3, like的使用

   在sql中查询使用最多的方法,就是like了。它一般有三种方式第一种,就是中间是cg两头匹配,第二种是后面是cg前面匹配,第三种是前面是cg后面匹配。如下

      Selec * from table where id like '%cg%'
      Selec * from table where id like '%cg'
      Selec * from table where id like 'cg%'
       
  在linq to Entity中给出了三种方法来实现来一一对应上面的方法

  第一种:就是中间是cg两头匹配

  
  var stu = from s in newEtrain.ETrain_students
                       where s.schoolcode.Contains(schoolcode)
                       orderby s.studentID descending
                       select s;

       第二种:后面是cg前面匹配

  

  var stu = from s in newEtrain.ETrain_students
                       where s.schoolcode.EndsWith(schoolcode)
                       orderby s.studentID descending
                       select s;
  第三种 :前面是cg后面匹配

 

  var stu = from s in newEtrain.ETrain_students
                       where s.schoolcode.StartsWith(schoolcode)
                       orderby s.studentID descending
                       select s;


    4, group by的使用

  group by 语句用于结合合计函数,根据一个或多个列对结果集进行分组

        sql 语句写法如下: 

  SELECT studentid,stu_name FROM ETrain_students GROUP BY stu_name,studentid

  linq to Entity的写法如下

  

      var stu = from s in newEtrain.ETrain_students 
                    where s.schoolcode==schoolcode
                    group stu_name by new {studentid,stu_name} into stus
                    select new stu_count{
                         stuid= stus.studentid,
                         stuname = stus.stu_name,
                         stucount = stus.count()
                    };
     这里面group 后面跟的是你要显示的相应字段,这里我们要显示是学生的姓名, by 后面则是你要按什么来进行分类的字段。into表示,你将分好类的数据存入到其中。

 在select中你可以进行合计函数的运算。

 

 

asp.net MVC + linq to Entity linq to Entity的基本操作

MVC搞明白之后,我们就要用一下linq to Entity了。它的基本语法与linq to sql很相似,只是在有一些地方有些区别,个人感觉最大的区别就是linq to sql有的一些功能,它没有,...
  • xingxing513234072
  • xingxing513234072
  • 2014年05月13日 16:57
  • 5091

LINQ to Entities 不识别方法

有时候我们在Select(投影)一些列的时候可能很自然需要使用一些方法,比如下面的代码。 [c-sharp:nogutter] view plaincopyprint? var ug =...
  • fxhflower
  • fxhflower
  • 2012年03月01日 00:16
  • 4603

asp.net MVC + linq to Entity简单教程(五)linq to Entity中join的使用以及子查询

多表联查,可以说是我们写sql语句时最常用的一种方法。一般采用,内联(join),左联(left join),右联( right join)的方式。这里不多说了,想必大家也都了解。这里我要说的一点是在...
  • chenguang79
  • chenguang79
  • 2012年03月30日 21:45
  • 6800

asp.net MVC + linq to Entity简单教程(一)MVC的建立与Entity的建立

最近在写一个项目,是一个用于手机浏览器浏览的一个校园办公的系统,主要是采用HTML5 + asp.net MVC进行编写的,平时在写程序的时候,很少用到MVC,一般都是用三层架构,因为MVC架构,生成...
  • chenguang79
  • chenguang79
  • 2012年03月27日 15:37
  • 5866

asp.net MVC + linq to Entity简单教程(二)MVC的简单操作

MVC的概念不多说,model + view + Controller 有人说这个和三层没有什么区别啊。也是分三层写的啊。MVC中model层我们真的没有做什么,基本就是建立数据模型,而control...
  • chenguang79
  • chenguang79
  • 2012年03月28日 11:36
  • 3124

asp.net MVC + linq to Entity简单教程(三)linq to Entity的基本操作

MVC搞明白之后,我们就要用一下linq to Entity了。它的基本语法与linq to sql很相似,只是在有一些地方有些区别,个人感觉最大的区别就是linq to sql有的一些功能,它没有,...
  • chenguang79
  • chenguang79
  • 2012年03月29日 15:39
  • 9425

Entity framework lambda/ linq like 模糊查询

Model1Container container=new Model1Container(); using (container) { ...
  • xuejike
  • xuejike
  • 2014年02月19日 00:22
  • 3263

Entity Framework技术系列之7:LINQ to Entities

前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据。L...
  • dyllove98
  • dyllove98
  • 2013年04月03日 23:58
  • 10485

Linq To Entity多条件or查询处理

1.多条件OR使用实例: //学费 if (string.IsNullOrEmpty(tuition) == false && tuition != "0") { Expression>...
  • u011127019
  • u011127019
  • 2016年07月11日 14:20
  • 1687

Linq to sql 和 Linq to Entity 高级查询

  • 2014年11月18日 14:45
  • 11KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net MVC + linq to Entity简单教程(四)linq to Entity查询中其它方法的使用
举报原因:
原因补充:

(最多只允许输入30个字)