【发布时间】:2012-01-17 19:00:14
【问题描述】:
如何构造一个包含OR 的LINQ WHERE 子句?
我有一个对象列表,我想返回符合搜索条件的对象。
包含的对象有很多属性,只要 any 符合条件,我想返回它:
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 表达式”类型的操作数
如何构造一个包含OR 的LINQ WHERE 子句?
另见
【问题讨论】: