我如何在使用 linq 到实体查询的位置之间添加 OR?

How do i add OR in between where using linq to entity query?

我想在 linq 中使用 OR 从同一列中搜索多个值。在SQL中是这样的:

var query = "Select * from table where id = 1";
query += "OR where id = 2";

id 来自一个 id 数组,所以我将 id 传递给一个变量并循环它。数组中的 id 数量不固定,取决于用户通过选中 table 中的复选框选择的 id 数量。因为如果我像下面那样做,它将 return null 因为它有点将我的 where 查询解释为 AND。我如何更改它以便它从所有 id 中获取行(使用 OR)?

Request request = db.Requests;
var selectedIdList = new List<string>(arrId);
if (arrId.Length > 0)
{
   for (var item = 0; item <= selectedIdList.Count() - 1; item++)
   {
      var detailId = Convert.ToInt32(selectedIdList[item]);

      request = request.Where(y => y.Id == detailId);
   }
}

只需在 Where[ 中将 || 用于 OR,将 && 用于 AND =24=]

但我更喜欢:

request.Where(y => selectedIdList.Contains(y.Id));

如果 selectedIdList 是字符串数组:

request.Where(y => selectedIdList.Contains(y.Id.ToString());

您可以使用 LinqKit。 Linqkit 提供动态创建谓词的东西

只需使用 packageManager 安装 linqKit,并使用 predicateBuilder 构建谓词

var predicate = PredicateBuilder.True<Patient>();

predicate=predicate.And(...)

predicate=predicate.Or(...)

然后在你的 where 子句中使用谓词

通过这种方式,您可以像在动态 SQL

中那样(动态地)创建 Or

您可以从此处获取更多详细信息 https://www.c-sharpcorner.com/UploadFile/c42694/dynamic-query-in-linq-using-predicate-builder/