Linq to SQL - 如何对查询结果进行排序

8

我有一个LINQ查询要检索,但在它的上下文中,我该如何对输出进行排序?我尝试使用sortby等等,但都没有成功。

    DataClasses1DataContext db = new DataClasses1DataContext();
    var returnall = from p in db.Orders
                    select p.ShipName;
5个回答

12
var returnall = from p in db.Orders
                orderby p.ShipName
                select p.ShipName;

MSDN示例页面上,可以找到各种LINQ函数的方便参考。


1
@James:不,它会根据ShipName排序,我假设这是一个字符串。您还可以按db.Orders中可用的任何其他字段进行排序。另外提醒一下,如果您想要降序排列,也可以使用orderby p.ShipName descending - SirViver
补充你的回答:按船名升序排序和按船名降序排序。 - James
你不必使用 "orderby shipname ascending" ... 它默认按升序排序,所以只需使用 "orderby shipname"。 - Jan Macháček

6
你可以使用OrderBy对多个属性进行排序,也可以使用ThenBy
 DataClasses1DataContext db = new DataClasses1DataContext();
 var returnall = db.OrderBy(r=> r.OrderDelivaryDate).
                    ThenBy(r => r. OrderName);

这个查询将首先按照 OrderDelivaryDate 排序,然后按照 OrderName 排序。
这里有一些简单的 Linq 查询 http://msdn.microsoft.com/en-us/vcsharp/aa336756#thenBySimple

3
var ret = db.Orders.OrderBy( x => x.ShipName );


0

为了对一个或多个字段的查询结果进行排序:

数据:

        List<Employee> emp = new List<Employee>() { new Employee() { emp_id = 101, emp_name = "David", emp_lang = "Java", dpt_id = 1 }
                                                    ,new Employee() { emp_id = 102, emp_name = "Lana",emp_lang = "C#", dpt_id = 2 }
                                                    ,new Employee() { emp_id = 103, emp_name = "Sona",emp_lang = "Java", dpt_id = 3 }
                                                    ,new Employee() { emp_id = 104, emp_name = "Mike",emp_lang = "C++", dpt_id = 3 }
                                                    ,new Employee() { emp_id = 105, emp_name = "Roma",emp_lang = "C#", dpt_id = 1 }

查询:

    var res = from e in emp
              orderby e.emp_lang, e.dpt_id
              select new { e.emp_name, e.emp_lang, e.dpt_id }

结果:

{ emp_name = "Roma", emp_lang = "C#", dpt_id = 1 }
{ emp_name = "Lana", emp_lang = "C#", dpt_id = 2 }
{ emp_name = "Mike", emp_lang = "C++", dpt_id = 3 }
{ emp_name = "David", emp_lang = "Java", dpt_id = 1 }
{ emp_name = "Sona", emp_lang = "Java", dpt_id = 3 }

    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接