Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态创建具有参数化返回属性的表达式_C#_Linq_Asp.net Core_Lambda_Entity Framework Core - Fatal编程技术网

C# 动态创建具有参数化返回属性的表达式

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

我需要创建一个方法,该方法将生成并返回一个表达式,我可以在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; 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;
    }