按字段C#Lambda </type>订购List <type>的最佳方法

时间:2014-04-01 03:13:29

标签: c# entity-framework 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();        
}

提前致谢。

1 个答案:

答案 0 :(得分: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将返回与Order字符串匹配的属性,前提是该字符串与该属性完全匹配。