C# 动态创建具有参数化返回属性的表达式
我需要创建一个方法,该方法将生成并返回一个表达式,我可以在LINQ中使用后者,以便从数据库中获取一些数据 我有一个实体类:C# 动态创建具有参数化返回属性的表达式,c#,linq,asp.net-core,lambda,entity-framework-core,C#,Linq,Asp.net Core,Lambda,Entity Framework Core,我需要创建一个方法,该方法将生成并返回一个表达式,我可以在LINQ中使用后者,以便从数据库中获取一些数据 我有一个实体类: public class Rule { public int Id { get; set; } public string Name { get; set; } public string C1 { get; set; } public string C2 { get; set; } public string C3 { get; s
public class Rule
{
public int Id { get; set; }
public string Name { get; set; }
public string C1 { get; set; }
public string C2 { get; set; }
public string C3 { get; set; }
public string C4 { get; set; }
}
以及接收两个参数的方法,这两个参数是规则类属性(列)的名称:
私有表达式GetExpression(字符串colX,字符串colY)
{
//表达式exp=x=>new{x=x.C1,Y=x.C3};
//返回经验;
}
有没有办法将返回对象属性的表达式动态设置为colX
和colY
,这是规则的类属性的名称?是
可以在运行时基于逻辑创建表达式
但一个更简单的方法和推荐的方法是使用开箱即用的库。有了这个库,就可以根据IQueryable
是的来编写动态LINQ查询(基于字符串)
我们有两种可能性
动态linq库
倒影
看看吧,还有很多类似的帖子。这在制作API时非常常见
private Expression<Func<Rule, object>> GetExpression(string colX, string colY)
{
// Expression<Func<Rule, object>> exp = x => new { X = x.C1, Y = x.C3 };
// return exp;
}