如何在 linq 查询 c# 中的 WHERE 语句后嵌入动态 OR 条件
Posted
技术标签:
【中文标题】如何在 linq 查询 c# 中的 WHERE 语句后嵌入动态 OR 条件【英文标题】:How to embed dynamic OR condition after WHERE statement in linq query c# 【发布时间】:2021-12-02 14:58:33 【问题描述】:我有一个这样的 LINQ 查询:
var getOnlyMP = from mpPoint in cmList where
mpPoint.Component.Contains("asd") ||
mpPoint.Component.Contains("dsa") ||
mpPoint.Component.Contains("123") ||
mpPoint.Component.Contains("456")
select new MP
MPName = mpPoint.Component,
X = mpPoint.PlaceX,
Y = mpPoint.PlaceY,
;
我想将“asd”、“dsa”、“123”、“456”存储在一个数组中,那么是否有可能在该数组上循环并动态比较 WHERE 子句之后的所有项目?
【问题讨论】:
【参考方案1】:您可以将.Any()
与数组一起使用,
var expectedStrings = new string[] "asd", "dsa", "123", "456";
var getOnlyMP = cmList.Where(mpPoint=>
expectedStrings.Any(x => mpPoint.Component.Contains(x)))
.Select(x => new MP
MPName = x.Component,
X = x.PlaceX,
Y = x.PlaceY,
);
在查询表单中,
var expectedStrings = new string[] "asd", "dsa", "123", "456";
var getOnlyMP = from mpPoint in cmList where
expectedStrings.Any(x => mpPoint.Component.Contains(x)))
select new MP
MPName = mpPoint.Component,
X = mpPoint.PlaceX,
Y = mpPoint.PlaceY,
;
【讨论】:
@dba,我的愚蠢错误。我已修复它,请查看更新的答案并感谢您的评论 我确定,这只是一个错字,但我无法编辑,因此评论:-)以上是关于如何在 linq 查询 c# 中的 WHERE 语句后嵌入动态 OR 条件的主要内容,如果未能解决你的问题,请参考以下文章
C# 使用带有 where 子句的 Linq 查询作为 dataTable 上的变量
使用 C# 中的 NEST 库调用 elasticsearch 时,如何向 linq 语句添加条件逻辑?