我正在使用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()))
);
请帮助我,我们将不胜感激。
答案 0 :(得分:3)
Any是您要寻找的。它返回:
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>