实体框架 - 按字段 C# Lambda 对列表<类型>进行排序的最佳方式

本文关键字:类型 排序 方式 最佳 列表 框架 字段 Lambda 实体 | 更新日期: 2023-09-27 17:56:04

我有以下代码可以正常工作,但我想知道是否有更好的方法可以根据用户的选择对选择进行排序。

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();        
}

提前谢谢。

实体框架 - 按字段 C# Lambda 对列表<类型>进行排序的最佳方式

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 字符串匹配的属性,前提是该字符串与该属性完全匹配。