2014-04-14 46 views
4

我是LINQ新手。我正在使用此功能:简单的LINQ排序不工作

public IEnumerable<Vendedores> GetVendedores() 
    { 
     using (var context = new OhmioEntities()) 
     { 
      Vendedores _allvendors= new Vendedores(); 
      _allvendors.Nombre = "All Vendors"; 
      _allvendors.ID_Vendedor = -1; 
      var query = context.Vendedores; 
      var _vendors= query.Where(f => f.Activo == true).OrderBy(o=>Nombre).ToList();          
      _vendors.Insert(0, _allvendors); 
      return _vendors; 
     } 
    } 

它应该给我活动供应商的订单列表。 where部分工作正常,但顺序被忽略,.ToList之后的记录按原始表格顺序排列。我做错了什么? 谢谢!

+3

'.OrderBy(O => o.Nombre)'通知的''之前Nombre' o.'。我确定lambda不知道'Nombre'属性没有它的类。 – paqogomez

+0

我猜''Nombre'是'this'的一个属性,所以它们都是按相同的值排序的。哪一个(给定一个稳定的排序,哪个LINQ有)与完全不排序相同。 –

+0

您是否在其他地方宣布了Nombre?它不应该像那样编译 –

回答

10

我认为你需要o.Nombre而不是Nombre

var _vendors = query 
       .Where(f => f.Activo) 
       .OrderBy(o=> o.Nombre) 
       .ToList();   

f => f.Activo == true可以写为f => f.Activo

+1

+1,很好。 – Habib

+0

优秀!我真是个傻瓜!奇怪的编译器不会告诉我这个..谢谢! – ericpap

2

它应该是这样的:

var _vendors= query.Where(f => f.Activo == true).OrderBy(o=>o.Nombre).ToList(); 
+0

是的!我错过了“o”。在Nombre领域之前。谢谢! – ericpap

+0

欢迎和高兴它帮助,有时它发生我们错过了一件小事,并不断思考什么是错的.. :) –