Bri*_*Low 20 c# ienumerable extension-methods
我想写:
IEnumerable<Car> cars;
cars.Find(car => car.Color == "Blue")
Run Code Online (Sandbox Code Playgroud)
我可以用扩展方法完成这个吗?以下失败是因为它递归调用自身而不是调用IList.Find().
public static T Find<T>(this IEnumerable<T> list, Predicate<PermitSummary> match)
{
return list.ToList().Find(match);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Jar*_*Par 52
这种方法已经存在.它被称为FirstOrDefault
cars.FirstOrDefault(car => car.Color == "Blue");
Run Code Online (Sandbox Code Playgroud)
如果你自己实现它会看起来有点像这样
public static T Find<T>(this IEnumerable<T> enumerable, Func<T,bool> predicate) {
foreach ( var current in enumerable ) {
if ( predicate(current) ) {
return current;
}
}
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
Jared是正确的,如果你正在寻找一辆蓝色的汽车,任何蓝色的汽车就足够了.这是你在找什么,或者你在寻找蓝色车的清单?
第一辆蓝色车:
Car oneCar = cars.FirstOrDefault(c => c.Color.Equals("Blue"));
Run Code Online (Sandbox Code Playgroud)
蓝色车列表:
IEnumerable<Car> manyCars = cars.FindAll(car => car.Color.Equals("Blue"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37928 次 |
最近记录: |