2014-04-01 29 views
1

我有以下代碼可以正常工作,但我想知道是否有更好的方法來根據用戶選擇的順序進行排序。按字段排序列表的最佳方式<type> C#Lambda

public List<TB_PRODUTO> GetAll(int ID_Empresa, String Order) 
{ 
    if(Order.Equals("COD_HERBALIFE")) 
     return Ent.TB_PRODUTO.Where(x => x.ID_EMPRESA == ID_Empresa).Select(x => x).OrderBy(x => x.COD_HERBALIFE).ToList(); 
    else if (Order.Equals("DESCRICAO")) 
     return Ent.TB_PRODUTO.Where(x => x.ID_EMPRESA == ID_Empresa).Select(x => x).OrderBy(x => x.DESCRICAO).ToList(); 
    else 
     return Ent.TB_PRODUTO.Where(x => x.ID_EMPRESA == ID_Empresa).Select(x => x).OrderBy(x => x.PRECO).ToList();   
} 

在此先感謝。

+8

撇開註釋:'Select(x => x)'只是_pointless_ –

+1

您是否試過動態查詢(LINQ)庫?這裏是[鏈接](http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx) – Nilesh

回答

0
private static object GetPropertyValue(object obj, string propertyName) 
{ 
    return obj.GetType().GetProperty(propertyName).GetValue(obj, null); 
} 

public List<TB_PRODUTO> GetAll(int ID_Empresa, String Order) 
{ 
    return Ent.TB_PRODUTO.Where(x => x.ID_EMPRESA == ID_Empresa).Select(x => x).OrderBy(x => GetPropertyValue(x, Order)).ToList(); 
} 

GetPropertyValue將返回與訂單字符串匹配的屬性,前提是該字符串與該屬性完全匹配。