Linq 管理 List数据

作者:编程技术

List<Student> stuList= stu.OrderBy(s=> new{ s.stuNO }).ThenBy(s=> new{s.stuName}).ToList<Student>();

        var result=from n in dataList select n.OrderByDescending(p => p.TimeWritten);  //查询集合所有数据按照时间字段降序来排序。升序为OrderBy()。

4.ThenBy

语句描述:使用复合的 orderby 对客户进行排序,进行排序:

var q =
    from c in db.Customers
    orderby c.City, c.ContactName
    select c;

说明:按多个表达式进行排序,例如先按City排序,当City相同时,按ContactName排序。这一句用Lambda表达式像这样写:

var q = 
    .OrderBy(c => c.City)
    .ThenBy(c => c.ContactName).ToList();

在T-SQL中没有ThenBy语句,其依然翻译为OrderBy,所以也可以用下面语句来表达:

var q = 
    db.Customers
    .OrderBy(c => c.ContactName)
    .OrderBy(c => c.City).ToList();

所要注意的是,多个OrderBy操作时,级连方式是按逆序。对于降序的,用相应的降序操作符替换即可。

var q = 
    db.Customers
    .OrderByDescending(c => c.City)
    .ThenByDescending(c => c.ContactName).ToList();

需要说明的是,OrderBy操作,不支持按type排序,也不支持匿名类。比如

var q = 
    db.Customers
    .OrderBy(c => new
    {
        c.City,
        c.ContactName
    }).ToList();

会被抛出异常。错误是前面的操作有匿名类,再跟OrderBy时,比较的是类别。比如

var q = 
    db.Customers
    .Select(c => new
    {
        c.City,
        c.Address
    })
    .OrderBy(c => c).ToList();

如果你想使用OrderBy(c => c),其前提条件是,前面步骤中,所产生的对象的类别必须为C#语言的基本类型。比如下句,这里City为string类型。

var q = 
    db.Customers
    .Select(c => c.City)
    .OrderBy(c => c).ToList();

//按学号降序

      复合查询:

6.带GroupBy形式

var q = 
    from p in db.Products
    group p by p.CategoryID into g
    orderby g.Key
    select new {
        g.Key,
        MostExpensiveProducts =
            from p2 in g
            where p2.UnitPrice == g.Max(p3 => p3.UnitPrice)
            select p2
    };

语句描述:使用orderby、Max 和 Group By 得出每种类别中单价最高的产品,并按 CategoryID 对这组产品进行排序。

List<Student> stuList = (from s instu orderby s.stuNOdescending select s).ToList<Student>();

    dataList.SubmitChanges();

3.降序排序

var q = 
    from p in db.Products
    orderby p.UnitPrice descending
    select p;

Linq表达式:

    NewSingle single=new NewSingle();

2.带条件形式

注意:Where和Order By的顺序并不重要。而在T-SQL中,Where和Order By有严格的位置限制。

var q =
    from o in db.Orders
    where o.ShipCity == "London"
    orderby o.Freight
    select o;

语句描述:使用where和orderby按运费进行排序。

List<Student> stuList = (from s instu orderby s.stuNO  select s).ToList<Student>();

 

适用场景:对查询出的语句进行排序,比如按时间排序等等。

List<Student> stu = (List<Student>)Session["StudentList"];

    传送门:

说明:按指定表达式对集合排序;延迟,:按指定表达式对集合排序;延迟,默认是升序,加上descending表示降序,对应的扩展方法是OrderBy和OrderByDescending

//按学号升序

    single.Name="Test2";

1.简单形式

这个例子使用 orderby 按雇用日期对雇员进行排序:

var q =
    from e in db.Employees
    orderby e.HireDate
    select e;

说明:默认为升序

 

    Average() 平均值

5.ThenByDescending

这两个扩展方式都是用在OrderBy/OrderByDescending之后的,第一个ThenBy/ThenByDescending扩展方法作为第二位排序依据,第二个ThenBy/ThenByDescending则作为第三位排序依据,以此类推

var q =
    from o in db.Orders
    where o.EmployeeID == 1
    orderby o.ShipCountry, o.Freight descending
    select o;

语句描述:使用orderby先按发往国家再按运费从高到低的顺序对 EmployeeID 1 的订单进行排序。

多字段主次顺序排序情况,先按no排序,再按name排序
List<Student> stuList= stu.OrderBy(s=> s.stuNO).ThenBy(s=> s.stuName).ToList<Student>();

    ToList() 转换成List

//按学号升序
单字段:List<Student> stuList= stu.OrderBy(s=> s.stuNO).ToList<Student>();
多字段:List<Student> stuList= stu.OrderBy(s=> new{s.stuNO,s.stuName}).ToList<Student>();

    ThenBy(s=>s.Name) 复合排序,出现在多字段列表中,置于在OrderBy后面

C#中List<T>排序的两种方法

    var data=from n in dataList select new { Name=n.Name,ID=n.ID};

 

    NewSingle single=from n in dataList where n.ID == 3 select n;

使用Lambda表达式排序: //按学号降序
单字段:List<Student> stuList= stu.OrderByDescending(s=> s.orderid).ToList<Student>();
多字段:List<Student> stuList= stu.OrderByDescending(s=> new{s.stuNO,s.stuName}).ToList<Student>();

  8、其他方法

    single.Name="Test1";

    Skip(number)跳过指定数量的项 】常用于表格分页

三种表现形式:复合查询、Lambda表达式以及混合查询。

  6、绑定GridView

      NewSingle single=dataList.Single(p=>p.ID==1);

    Sum() 总和 

    Max()/Min()  最大值/最小值

    注:linq中不支持Convert转换。

    DropDownList1.DataSource=data;

    var result=from a in mytest.stuInfo join b in mytest.stuMarks on a.stuNo equals b.stuNo (into c) select new {Name=a.stuname,b.writtenExam};

    single.TimeWritten="2011-3-17";

  4、修改数据

    DropDownList1.DataTextField="Name";

       var result=from n in dataList orderby n.TimeWritten descending select n;   //可以将n看做是dataList,得到的结果是dataList里面所有值按时间字段的降序排列。

    TakeWhile() 根据指定条件提取

    Count() 数据总数

    SkipWhile() 根据指定条件跳选项,从第一个不符合小件的项开始提取

      dataList.DeleteOnSubmit(NewSingle);

    dataList.SubmitChanges();

    SubString(n,m) 从n开始截取m条数据

    single.Subject="subject2";

  1、查询集合数据方法依次为:

      Lambda表达式查询:

  5、查询绑定DropDownList

 

      var result=dataList.Select(p=>new{p.ID,p.Name,p.TimeWritten}); //Lambda表达式由匿名方法演变而来。这段Code中p为参数,多个参数可用(p,m..)表示。"=>"为推出符号,后面为返回值。该事例的返回值为对象中指定的字段。

  2、删除数据

    Distinct() 过滤重复数据

  7、表联接

    Repeat(重复值,重复次数) 生成重复项

    DeleteAllOnSubmit<T>(object)  删除T类型的对象

概述:LINQ又称为语言集成查询,是一种类似于SQL的一种查询语言。语言集成查询让开发人员可以使用.NET程序语言(如C#)去查询数据源,主要数据源为内存中的集合对象、ADO.NET数据集、数据库以及XML,开发人员不用去分门别类地学习众多的查询语法就可以轻松地查询异构数据源。

    Range()  例:num=Enumerable.Range(1,10) 从1开始产生十个数据

        混合查询:

    GridView1.DataBind();

    DropDownList1.DataValueField="ID";

    List<NewSingle> dataList=new List<NewSingle>();

    single.Subject="subject";

  3、插入数据

    GroupBy() 分组

    Take(number) 提取指定数量的项 】

 

    DropDownList1.DataBind();

    single.TimeWritten=this.DateTime.Now.ToString();

      dataList.SubmitChanges();

    GridView1.DataSource=dataList.Select(p=>p);

    dataList.InsertOnSubmit(single);

    Where() 条件查询返回bool

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 [3]SqlServer LINQ to SQL