使用LINQ排序不同的值

可能重复:
如何使用LINQ从DataTable获取不同的,有序的名称列表?

这是我的第一个问题。 我从我的数据库中获取了一个下拉列表的不同值列表,如下所示:

var plocQ = (from m in db.SERVICE_NRS orderby m.PLOC select new { PlocID = m.PLOC, value = m.PLOC }).Distinct(); 

排序似乎没有效果,我必须这样做:

 var plocQ = (from m in db.SERVICE_NRS select new { PlocID = m.PLOC, value = m.PLOC }).Distinct(); plocQ = from s in plocQ orderby s.PlocID select s; 

我想知道这是否与LINQ或数据库有关? 我对LINQ有点新,之前写过太多SQL。 有任何想法吗?

这是因为在对初始结果进行排序后,您正在更改投影中的内容。 Distinct不保证订单得到保留。

顺便说一句,即使它确实那样工作,你仍然不想! 您将整理整个项目列表,即使其中一些项目将被抛弃。

如果您只想在一个语句中执行此操作,则可以执行以下操作:

 var plocQ = (from m in db.SERVICE_NRS select new { PlocID = m.PLOC, value = m.PLOC }) .Distinct() .OrderBy(s => s.PlocID);