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

Ste*_*ack 2 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;
}
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 7

调用Distinct()将撤消您的排序,因为它不保留输入序列顺序.您需要OrderByDistinct()通话结束后执行:

List<String> query = dc.ZipTables.Select(z => z.State)
                       .Distinct()
                       .OrderBy(s => s)
                       .ToList();
Run Code Online (Sandbox Code Playgroud)