如何构造WHERE包含的LINQ 子句OR?
我有一个对象列表,我想返回符合搜索条件的对象.
所包含的对象有很多属性,只要任何比赛的标准,我想退货:
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))
);
Run Code Online (Sandbox Code Playgroud)
但是无法编译:
运营商'||' 不能应用于'lambda expression'和'lambda expression'类型的操作数
如何构造WHERE包含的LINQ 子句OR?
Tho*_*que 16
只需在同一个lambda表达式中完成所有测试...
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)
);
Run Code Online (Sandbox Code Playgroud)