2014-03-29 47 views
0

我在一类这个简单的函数,返回使用LINQ投影IEnumerable的保藏:为什么IEnumerable.ToList()按字母顺序返回字段?

public IEnumerable<Pedidos> Pedidos_Listar(string sComprobante, Clientes MyCliente = null, DateTime? dDesde = null, DateTime? dHasta = null, bool bCumplidos = false) 
     { 
      using (var context = new OhmioEntities()) 
      {     
       return 
        (from Pedidos in context.Pedidos 
        join Clientes in context.Clientes on Pedidos.ID_Cliente equals Clientes.ID_Cliente 
        where Pedidos.ID_Comprobante == sComprobante      
        select Pedidos).ToList();     
      } 
     } 

谁能告诉我,为什么IEnumerable的领域按字母顺序排列,而不是原来的对象定义返回?我如何按特定顺序返回成员?谢谢

UPDATE 对不起,如果我的问题不清楚。我会尽力解释我的问题。类Pedidos(这是真的从EF生成波苏斯类)有一些性质是这样的:

public class Pedidos 
    { 
     public virtual int ID_Pedido { get; set; }   
     public virtual int Numero { get; set; } 
     public virtual DateTime Fecha { get; set; } 
     public virtual DateTime FechaEntrega { get; set; }    
     public virtual string Cliente { get; set; } 
     public virtual Decimal Bruto { get; set; } 
     public virtual Decimal Neto { get; set; } 
     public virtual Boolean Aprobado { get; set; } 
     public virtual string Observaciones { get; set; } 
     public virtual Boolean Entregado { get; set; }   
    } 

我的订单问题不是关于类里面的数据,所以ORDER sugestion不能解决我的问题。这是关于属性的顺序。当我使用ToList()来填充这个类时,我按照字母顺序(Aprobado,Bruto等)来获取属性,而不是类顺序(ID_Pedido,Numero等)的定义。这些字段的名称的语言无关紧要。希望这清楚我的答案。

Thats the result show by VS

当我尝试了一个DataGrid,以显示对cliente数据:

same problema here

正如你可以在这两种情况下看到性能属性出现顺序alphabelicaly而不是类的顺序。为什么?

+0

1.运气2.使用顺序由什么 –

+0

字母顺序?我们不知道“Pedidos”究竟是什么......你说的“IEnumerable的字段”是什么意思?你的问题目前还不清楚。 –

+0

@ericpap为了得到更好的答案,将代码翻译成英文将是有意义的... –

回答

0

IEnumerable中的订单没有定义,它可能是任何东西。如果您仍想定义订单,则可以使用OrderBy

+0

我编辑我的问题给更多的细节 – ericpap

0

查询中没有任何内容是按字母顺序排序的。

使用orderby关键字排序的结果:

from Pedidos in context.Pedidos 
join Clientes in context.Clientes 
    on Pedidos.ID_Cliente equals Clientes.ID_Cliente 
where Pedidos.ID_Comprobante == sComprobante 
orderby Pedidos.ID // change to the field you want to sort by alphabetically 
select Pedidos 
+0

我编辑我的问题,以提供更多的细节 – ericpap

2

就像使用SQL,对LINQ查询没有定义排序。它可以以任何它想要的顺序返回。它返回有序列表的事实可能要感谢内部工作,不应该依赖。如果你想建立特定的顺序,使用orderbyOrderBy方法:(?)

   (from Pedidos in context.Pedidos 
       join Clientes in context.Clientes on Pedidos.ID_Cliente equals Clientes.ID_Cliente 
       where Pedidos.ID_Comprobante == sComprobante 
       orderby Pedios.[the property you want to order by] 
       select Pedidos).ToList();