gpt4 book ai didi

c# - 运算符 '||' 不能应用于类型 'lambda expression' 和 'lambda expression' 的操作数

转载 作者:太空狗 更新时间:2023-10-29 18:05:32 27 4
gpt4 key购买 nike

我如何构建包含 OR 的 LINQ WHERE 子句?


我有一个对象列表,我想返回符合搜索条件的对象。

包含的对象有很多属性,只要任何符合条件,我就想返回它:

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))
);

但是编译失败:

Operator '||' cannot be applied to operands of type 'lambda expression' and 'lambda expression'

我如何构建包含 OR 的 LINQ WHERE 子句?

另见

最佳答案

只需在同一个 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)
);

关于c# - 运算符 '||' 不能应用于类型 'lambda expression' 和 'lambda expression' 的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8900131/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com