linq-> SQL命令降序不起作用

问题描述

|
var Customer = (from c in DNAContextsql.Customers
                                where c.LastName != \"\"
                                orderby c.PKID_Customer descending
                                select new
                                {
                                    c.PKID_Customer,c.OrganizationName,c.FirstName,c.LastName,c.Phone,c.Extension
                                }).distinct().ToList();
我知道这是基本的。我找不到任何不正常的理由。发送到sql Profiler的查询似乎没有
order by
子句。 有任何想法吗? 我可以让它与ѭ2一起工作,但想知道这种疯狂背后的原因。     

解决方法

        通过尝试在distinct()之后调用orderBy,distinct可能会弄乱订单。
var Customer = (from c in DNAContextSQL.Customers
                where c.LastName != \"\"
                select new
                   {
                      c.PKID_Customer,c.OrganizationName,c.FirstName,c.LastName,c.Phone,c.Extension
                    }
                ).Distinct().OrderByDescending(c=>c.PKID_Customer).ToList();
发生这种情况的原因是,您首先选择了一组由PKID_Customer排序的行(并且在您调用distinct()方法之前它们一直是有序的),然后,Distinct()方法将它们重新排列为新的不同的无序记录集。