创建IEnumerable< T> .Find() [英] Create IEnumerable<T>.Find()

查看:135
本文介绍了创建IEnumerable< T> .Find()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想写:

IEnumerable<Car> cars;
cars.Find(car => car.Color == "Blue")

我可以使用扩展方法来完成此操作吗?以下操作失败,因为它递归地调用自身而不是调用IList.Find().

Can I accomplish this with extension methods? The following fails because it recursively calls itself rather than calling IList.Find().

public static T Find<T>(this IEnumerable<T> list, Predicate<PermitSummary> match)
{
    return list.ToList().Find(match);
}

谢谢!

推荐答案

此方法已存在.叫做FirstOrDefault

This method already exists. It's called FirstOrDefault

cars.FirstOrDefault(car => car.Color == "Blue");

如果您要自己实现它,它将看起来像这样

If you were to implement it yourself it would look a bit like this

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);
}

这篇关于创建IEnumerable&lt; T&gt; .Find()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆