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;
}
答案 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;
}