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

时间:2014-09-09 16:48:00

标签: linq entity-framework

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

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();

哪个什么都没做。

1 个答案:

答案 0 :(得分:2)

由于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;