运算符“||"不能应用于“lambda 表达式"和“lambda 表达式"类型的操作数 [英] Operator '||' cannot be applied to operands of type 'lambda expression' and 'lambda expression'
本文介绍了运算符“||"不能应用于“lambda 表达式"和“lambda 表达式"类型的操作数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何构造包含 OR
的 LINQ WHERE
子句?
How do i construct a LINQ WHERE
clause that contains OR
?
我有一个对象列表,我想返回那些匹配搜索条件的对象.
i have a list of objects, and i want to return those that match a search criteria.
包含的对象有很多属性,只要any符合条件,我就想返回:
The contained objects have many properties, and as long as any match the criteria, i want to return it:
IEnumerable<Item> list;
String keyword;
...
var results = list.Where(
(item => item.Name.Contains(keyword, StringComparison.CurrentCultureIgnoreCase))
||
(item => item.Description.Contains(keyword, StringComparison.CurrentCultureIgnoreCase))
||
(item => item.Description.Contains(keyword, StringComparison.CurrentCultureIgnoreCase))
||
(item => item.ItemType.Contains(keyword, StringComparison.CurrentCultureIgnoreCase))
||
(item => item.ItemID.ToString().StartsWith(keyword, StringComparison.CurrentCultureIgnoreCase))
||
(items => items.Value.ToString().StartsWith(keyword, StringComparison.CurrentCultureIgnoreCase))
);
但是编译失败:
运算符'||'不能应用于lambda 表达式"和lambda 表达式"类型的操作数
Operator '||' cannot be applied to operands of type 'lambda expression' and 'lambda expression'
如何构造包含 OR
的 LINQ WHERE
子句?
How do i construct a LINQ WHERE
clause that contains OR
?
推荐答案
只需在同一个 lambda 表达式中进行所有测试...
Just do all your tests in the same lambda expression...
IEnumerable<Item> list;
String keyword;
...
var results = list.Where(
item => item.Name.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)
|| item.Description.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)
|| item.Description.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)
|| item.ItemType.Contains(keyword, StringComparison.CurrentCultureIgnoreCase)
|| item.ItemID.ToString().StartsWith(keyword, StringComparison.CurrentCultureIgnoreCase)
|| items.Value.ToString().StartsWith(keyword, StringComparison.CurrentCultureIgnoreCase)
);
这篇关于运算符“||"不能应用于“lambda 表达式"和“lambda 表达式"类型的操作数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文