Order by子句不能正常工作

时间:2013-10-21 11:11:00

标签: c# asp.net linq

LINQ-我使用order by子句按升序排序以获取数据库中的所有状态,但它不起作用。 这是代码:

 public List<State> GetAllStates()
    {
        List<State> p;
        p = (from a in _db.ProductImageMaps
             where a.State != "" && a.State != null
             select new State
             {
                 Name = a.State
             }).OrderBy(a=>a.Name).Distinct().ToList();
        return p;

    }

1 个答案:

答案 0 :(得分:2)

按设计Disitnct返回源中唯一项目的无序序列。

因此,当你在order by子句之后调用Distinct时,你正在失去你所追求的序列。其次,在Distinct之后调用OrderBy对我来说更有意义,因为只订购不同的记录会更有效。

这样做

public List<State> GetAllStates()
    {
        List<State> p;
        p = (from a in _db.ProductImageMaps
             where a.State != "" && a.State != null
             select new State
             {
                 Name = a.State
             }).Distinct().OrderBy(a=>a.Name).ToList();
        return p;

    }