List<int> lista = new List<int>() { 3, 4, 9, 8, 5, 6, 0, 3, 8, 3 };
int number = lista.Count(n => n <= 5);
Run Code Online (Sandbox Code Playgroud)
我知道我们用这些数字创建列表……但是我们如何得到 6?不明白 (n => n <= 5) 这实际上发生了什么。
Jas*_*n W 20
这是计算列表中该数字小于或等于 5 的元素数。您得到“6”,因为元素 3、4、5、0、3 和 3 满足此条件。
该n => n <= 5会引起混乱。它是 Lamba 表达式 ( n =>expression ) 和谓词/条件 ( n <= 5) 的组合。
当您调用此Count<TSource>(...)方法时,您正在使用此签名从 Enumerable 调用扩展方法:
Count<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
Run Code Online (Sandbox Code Playgroud)
对于您的情况,source是“lista”,而您predicate是n <= 5. 然后,基本上这段代码正在运行:
int count = 0;
foreach (TSource element in source) {
checked {
if (predicate(element)) count++;
}
}
return count;
Run Code Online (Sandbox Code Playgroud)
只有当谓词条件与您提供的条件匹配时,它才会迭代您的列表计数。
完整来源:https : //referencesource.microsoft.com/#system.core/system/linq/Enumerable.cs,1329
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |