当前位置: 首页 > 知识库问答 >
问题:

使用funct,bool>构建动态LINQ where表达式

万修为
2023-03-14

所以,我想知道是否可以在C#中做下一件事:

我有一个DB模型--假设它是 :

public class Car {
  public string Id {get;set;}
  public string Name {get;set}
}

中该类型的DbSet:

public DbSet<Car> Cars {get;set;}

我还有一个

public class CarDto {
  public string Id {get;set;}
  public string Name {get;set}
}

问题是--有可能用不同的IN对象动态构建linq WHERE表达式吗?

null

var select = new Func<CarDto, bool>(car => car.Name == "BMW");

// And somehow use this expression for other type Car
someDbContext.Cars.Where(select);

共有1个答案

田瀚
2023-03-14

null

private static Expression<Func<T, bool>> BuildCondition<T>(string name)
{
    var carParameter = Expression.Parameter(typeof(T), "car");
    var propertyAccess = Expression.Property(carParameter, "Name");
    var equalsTest = Expression.Equal(propertyAccess, Expression.Constant(name));
    return Expression.Lambda<Func<T, bool>>(equalsTest, carParameter);
}

你会把它叫做:

someDbContext.Cars.Where(BuildCondition<CarDto>("BMW"));

我们通过使用 类上的helper方法手动构造表达式 。了解这些信息最简单的方法是做以下事情:

Expression<Func<CarDto, bool>> expr = x => x.Name == "BMW";

然后在调试器中检查 ,您将了解表达式是如何组合在一起的。

 类似资料:
  • 我是JavaFx新手,尝试用三个StackPane构建下面的屏幕,可以根据窗口大小动态地增加和缩小宽度和高度。我尝试了不同的方法,但没能做到这一点。我还尝试使用锚烷约束。这是我试图实现的图像和相应的FXML。以下是我在这些窗格之间寻找的约束条件 左窗格具有最大宽度(300px)和最小150 左右之间的距离(2)堆栈窗格应保持不变 右顶部和底部堆栈窗格之间的距离应保持不变 左顶部堆栈窗格的最大高度为

  • 我想用jQuery开发一个动态表单生成器,用户可以在其中构建自己的表单并更改表单名称、输入类型、大小等。我知道有一些很酷的拖放在线表单生成器,但我想开发一个非常简单的表单生成器。 我已经开始发展这一点,我面临着一些问题。 当用户单击标签(输入字段)时,它会使用jquery和edit and delete按钮动态创建一个输入字段。 下面的代码在div中附加输入字段,该字段现在是空的。 点击文本输入,

  • 问题内容: 给定一个像这样的json: 和两个常规的html输入: 我需要建立一个包含所有可能变化形式的表,例如: 这意味着,如果用户继续通过输入添加值,则将出现建立新变体的新行,例如: 我还需要有可用的id来处理它,并且当我使用输入(例如“Peter”“Black”)添加新值时,我需要像自动递增那样动态地自动填充id(颜色id)mysql,结果如下: 那可能吗?我可以使用哪些选项进行角度操作?我

  • 我试图使用csv文件中的数据构建随机json请求。我已经定义了我的目标。场景功能如下 但是当我将日志级别设置为跟踪时,我看到所有请求都具有相同的值。我错过了什么吗?

  • 问题内容: 我对php和编码一般还是比较陌生的。 我有一系列条件需要测试是否已设置。它们是$ option1,$ option2,$ option3 因此,这里的问题是我需要根据条件是否设置来对mysql进行唯一查询。但是它们彼此之间有很多联系,实际上我有7种选择,因此分支绝对庞大!我几乎迷惑了自己之后才三点钟停下来。 必须有一种非常出色的书写方式-有人可以帮助我更好地理解吗? 问题答案: 无需动

  • 问题内容: 我必须根据从XML填充的通过HTTP检索的数据在活动中构建动态表单。 这可以是一个或多个,每个正好为3 s。在RadioGroups之后,我需要放置两个和一个带有提交按钮的控件。 我已经准备了一个具有垂直方向和唯一ID的代码,可以从代码中寻址,并且我希望可以在Java代码中创建表单控件,而无需在android XML布局中定义和添加它。 我在谷歌上搜索了几个小时,但是找不到如何执行此操