我想弄清楚为什么它不喜欢我在All()中的支票:
itemList.Where(x => itemList.All(x.ItemType != ItemType.Test1 && x.ItemType != ItemType.Test2)).ToList();
The type arguments for method 'System.Linq.Enumerable.All<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)' cannot be inferred from the usage.
更新:这里的原意是给我回列表,过滤掉All()中的标准匹配的那些项目。
因此,请过滤掉Item.Type不是这个或那个的列表中的那些项目。
答案 0 :(得分:3)
您还没有提供lambda表达式 - 您想要对内部itemList
中的每个项目执行什么操作?它应该是这样的:
itemList.Where(x =&gt; itemList.All(item =&gt; x.ItemType!= item.Test1
&安培;&安培; x.ItemType!= item.Test2))。ToList();
请注意“item =&gt;”部分。
在All
方法中再次使用相同的集合是不寻常的......但是,您能否让我们了解更大的图片?
编辑:你根本不需要打电话给All
。出了什么问题:
itemList.Where(x => x.ItemType != ItemType.Test1 && x.ItemType != ItemType.Test2)
.ToList();
?我想你可能对All
的含义感到有点困惑 - 它会测试给定集合中的 all 项是否与给定条件匹配。
答案 1 :(得分:1)
All
方法需要Func<T, bool>
谓词作为参数。你的代码没有。
目前尚不清楚您的代码究竟要做什么,因此很难提出更具体的修复方法。