2 c# linq ienumerable predicate icollection
所以我想知道是否有人会对我在这里做了什么做了非常彻底的解释,我知道我在做什么,以及代码的含义是什么,但是,如果我要解释它,我会毫无头绪.
public static IEnumerable<TSource> VisitorWhere<TSource>(this IEnumerable<TSource> enumerable, Predicate<TSource> CompareMethod)
{
ICollection<TSource> temp = new List<TSource>();
foreach (TSource item in enumerable)
{
if(CompareMethod(item))
{
temp.Add(item);
}
}
return temp;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码只是一个扩展方法,它迭代一个集合并只返回与谓词匹配的项:
扩展方法使您可以向现有类型"添加"方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型.
我不会称之为LINQ方法.大多数LINQ方法都是流畅的(你可以链接它们),就像你使用扩展方法一样,但你在案例中缺少的是类似方法的执行Where是延迟的(即项目是一个接一个地消耗,只有当他们被要求).另一方面,您可以立即执行并一次性消耗整个输入序列.
查看收益率回报:
public static IEnumerable<TSource> VisitorWhere<TSource>(this IEnumerable<TSource> enumerable, Predicate<TSource> compareMethod)
{
foreach (TSource item in enumerable)
{
if (compareMethod(item))
{
yield return item;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |