c# - 在列表中搜索列表中的元素
问题描述
我正在使用 Linq 查询进行搜索,我有一个列表productList
,我在上面搜索一些数据,其中的一部分我在IQProductSkuList
上面的列表中有另一个列表。
所以我必须将数据搜索到整个检索到的数据中,但是每当我要在另一个列表中的列表中找到它时,它会给出如下错误。
无法将类型“System.Linq.Iqueryable”隐式转换为 bool
无法将 lambda 表达式转换为预期委托,因为块中的某些返回类型不能隐式转换为委托返回类型
这是我的代码
首先搜索主列表
productList = productList.Where
(x =>
(x.ProductName ?? "").ToLower().Contains(searchingkey.ToLower().Trim())
|| (x.ProductAbbreviation ?? "").ToLower().Contains(searchingkey.ToLower().Trim())
|| (x.ProductDisplayName ?? "").ToLower().Contains(searchingkey.ToLower().Trim())
|| (x.DestinationName ?? "").ToLower().Contains(searchingkey.ToLower().Trim())
|| (x.DestinationCityName ?? "").ToLower().Contains(searchingkey.ToLower().Trim())
);
它工作正常,但是当我在里面的列表上搜索时productList
会出错。
这是在引发异常的列表中的列表上搜索的代码。
productList = productList.ToList().Where(x => x.IQProductSkuList.Where
(
x => (x.SKUCode ?? "").ToLower().Contains(searchingkey.ToLower().Trim()))
);
请帮助我任何形式的帮助将不胜感激..
解决方案
任何是您正在寻找的。它返回:
true
如果源序列包含任何元素;否则,false
。
productList = productList.ToList().Where(x => x.IQProductSkuList.Any
(
x => (x.SKUCode ?? "").ToLower().Contains(searchingkey.ToLower().Trim())
));
实际上Where方法要求它。如果您查看文档,那么您会看到它需要这种类型的参数:
谓词
Func<TSource,Boolean>
用于测试每个元素的条件的函数。
这意味着函数的输入是类型TSource
,返回值必须是类型Boolean
。
Any
匹配的返回类型:
退货
Boolean
由于方法的返回值,您的问题是不匹配Where
:
退货
IEnumerable<TSource>
推荐阅读
- google-apps-script - 无法检索下一个对象:迭代共享驱动器时,迭代器已到达结束错误
- nuget - 如何使用 dotnet cli 正确发布到带有 SymbolSource 的 MyGet(nupkg + snupkg 统一发布)
- bash - 打开 SQLite 3 shell,但使用点命令初始化
- kubernetes - 除了 ConfigMap 之外,还有哪些其他方式可以向 pod 提供配置信息
- python - 在 pandas 数据框中检查 NaN 时的奇怪行为
- python - 如何从 GridsearchCV 获取 feature_importances_
- javascript - javascript - 为什么我不能用 React 更新我的表单字段
- c++ - 如何计算生成几何的每个顶点法线?OpenGL
- discord.js - 如何将文件附加到消息中?
- react-native - 如何按组显示日期,例如 Whatsapp 聊天屏幕?