now*_*ed. 4 c# .net-4.0 visual-studio-2010 .net-4.5
我要做的就是检查列表B中的所有元素是否都在列表A中
if (listA.All(element => listB.Contains(element))
{
return;
}
Run Code Online (Sandbox Code Playgroud)
有人想出了另一个解决方案,说这会起作用并且有效!
if (listA.All(listB.Contains))
return;
Run Code Online (Sandbox Code Playgroud)
现在,(我知道它有效),
提前致谢.
Dan*_*Dan 13
该All方法要求将谓词作为参数:Func<T, bool>其中T,相同的类型是谓词中的项List<T>.此代码有效,因为它提供了这样的方法.该All方法将返回一个值,该值指示是否导致在列表中的每个项上调用提供的谓词的结果true.所述参数是参考向Contains相匹配所需的方法Func<T, bool>,以一个单一的参数T和返回bool.
考虑以下两行代码:
Func<string, bool> predicate1 = s => s.Length > 5;
Func<string, bool> predicate2 = listB.Contains;
Run Code Online (Sandbox Code Playgroud)
这两行都有效,因为赋值运算符右侧的表达式求值为采用单个string参数的方法,并返回a bool.您可以传递predicate1或predicate2进入该All方法.它与您提供的代码相同,只是谓词是直接传递的,而不是先存储在变量中,而是传入变量.
该Contains方法实际上并未作为参数调用.它只在内部由All方法调用.
如果您想进行不区分大小写的搜索,并使用与上面相同的语法,则需要一个执行不区分大小写搜索的方法.您可以随时使用自定义匿名方法:
listA.All(x => listB.Any(
z => string.Equals(x, z, StringComparison.OrdinalIgnoreCase)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |