如何在EntityFramework中使用OrderBy

时间:2016-11-17 09:57:02

标签: c# entity-framework entity-framework-6 sql-order-by

我有一个名为Person的表,有两列:(PersonId - key,PersonName

我正在尝试检索PersonName订购的所有人。

以下代码不会命令我的结果:

var persons = from p in MyContext.Persons.OrderBy(x=>x.PersonName) select p;

var res = persons.Distnct().ToArray();

是否可以在该阶段执行订单(我知道在评估后将OrderBy移至第二行 - 执行订单)?

3 个答案:

答案 0 :(得分:3)

Linq文档说:

  

Distinct(...)方法返回一个无序序列,该序列不包含重复值。

所以订单不能保证保持不变。
如果您在.Distinct()之后需要保证订购,那么您唯一的选择就是再次申请.OrderBy()

参考:
https://msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspx

答案 1 :(得分:1)

您可以在单个查询中包含order by和distinct。它对我来说很好:

var persons = MyContext.Persons.OrderBy(x => x.Name).Select(x => x.Name).Distinct();

如果要将其转换为数组,请使用ToArray()方法。

答案 2 :(得分:0)

试试这个:

var result = (from p in MyContext.Persons
                     select new
                     {
                         p.PersonName
                     }).Distinct().OrderBy(x => x.PersonName).ToArray();

没有LINQ

的解决方案
 var result = MyContext.Persons.Select(a => new { a.name }).Distinct().OrderBy(a => a.name).ToArray();