使用LINQ对Distinct值进行排序

本文关键字:排序 Distinct LINQ 使用 | 更新日期: 2023-09-27 18:04:44

可能重复:
如何使用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。有什么想法吗?

使用LINQ对Distinct值进行排序

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

顺便说一句,即使确实是这样工作的,你仍然不想!你会对整个项目列表进行排序,即使其中一些项目即将被丢弃。

如果你只想在一句话中完成这一切,你可以这样做:

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