为什么我在linq中的orderby方法不起作用?

时间:2011-07-25 17:19:05

标签: linq

我想在名为ZipTable的数据表中查询不同的状态名称,并使用alpha-beta顺序列出状态名称,但它不起作用。我错过了什么吗?

public List<String> GetAllStates()
{
    ZipTableDataContext dc = new ZipTableDataContext(_connString);
    List<String> query = (from z in dc.ZipTables
                          orderby z.State
                          select z.State).Distinct().ToList();
    return query;
}

1 个答案:

答案 0 :(得分:7)

Distinct()的调用将撤消您的排序,因为它不保留输入序列顺序。您需要在OrderBy电话后执行Distinct()

List<String> query = dc.ZipTables.Select(z => z.State)
                       .Distinct()
                       .OrderBy(s => s)
                       .ToList();