将不同linq排序为实体结果集



我在表中查询不同的列条目:

var thing = (from i in db.Items
                     select i.GeoName).Distinct();

这很有效。

然而,它是无序的。

有没有一种简单的方法对这个结果集进行排序?

我试过

var thing = (from i in db.Items
                     orderby i.GeoName descending
                     select i.GeoName).Distinct();

这毫无作用。

因为Distinct()不是订单保留操作,所以您需要在调用Distinct()之后执行OrderBy。最简单的方法是使用lambda语法:

var thing = (from i in db.Items
                 select i.GeoName)
            .Distinct()
            .OrderBy(n => n);

另一种说法是:

var thing = db.Items.Select(i => i.GeoName)
            .Distinct()
            .OrderBy(n => n);

或者,如果您已经下定决心使用查询表达式语法:

var thing = from geoName in
                (from i in db.Items
                 select i.GeoName)
                .Distinct()
            orderby geoName
            select geoName;

最新更新