C# 用LINQ排序不同的值

C# 用LINQ排序不同的值,c#,linq,sorting,C#,Linq,Sorting,可能重复: 这是我的第一个问题。我从数据库中获得一个下拉列表的不同值列表,如下所示: 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

可能重复:

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

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。有什么想法吗?

这是因为在对初始结果进行排序后,您正在更改投影中的内容

顺便说一句,即使它确实是这样工作的,你还是不想!你将在整个项目列表中进行排序,即使其中一些项目将被扔掉

如果您只想在一条语句中完成这一切,可以执行以下操作:

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

谢谢这就解释了。我还发现了这篇与SQL相关的文章。很高兴能提供帮助!事实上,同一篇文章已经在我的回答中被链接了。啊,好的,贾斯汀,我看到了你的链接。谢谢@Dmitry,下次我们将尝试更好的搜索!