如何避免 lambda 表达式中的 OR 条件
How to Avoid OR condition in lambda expression
我是 lambda 表达式的新手。我遇到了一个字符串类型列表,我必须在其中根据某些关键字进行查询。我可以使用多个 OR 条件,但这不是我想要的。
这是片段:
List<string> messageList = new List<string>();
//add some data to this list
.
.
//now query
var message = messageList.Where(x => x.Contains("SomeValue") && (x.Contains(value_1)) || (x.Contains(value_2))).ToList();
在上面的代码中,OR 列表可能会继续...
如果我在一个列表中有所有这些值(用于 OR),我们是否有一些通用的方法来避免这些 OR 条件并改为查询此列表
如能提供这方面的帮助,我们将不胜感激
您可以在单词列表中使用 Any
来检查:
var words = new [] {value_1, value_2, ...};
var message = messageList.Where(x => x.Contains("SomeValue")
&& words.Any(w => x.Contains(w))
.ToList();
我是 lambda 表达式的新手。我遇到了一个字符串类型列表,我必须在其中根据某些关键字进行查询。我可以使用多个 OR 条件,但这不是我想要的。
这是片段:
List<string> messageList = new List<string>();
//add some data to this list
.
.
//now query
var message = messageList.Where(x => x.Contains("SomeValue") && (x.Contains(value_1)) || (x.Contains(value_2))).ToList();
在上面的代码中,OR 列表可能会继续...
如果我在一个列表中有所有这些值(用于 OR),我们是否有一些通用的方法来避免这些 OR 条件并改为查询此列表
如能提供这方面的帮助,我们将不胜感激
您可以在单词列表中使用 Any
来检查:
var words = new [] {value_1, value_2, ...};
var message = messageList.Where(x => x.Contains("SomeValue")
&& words.Any(w => x.Contains(w))
.ToList();