我的代码中有一个类已经派生自 IEnumerable。我想知道是否有一种方法可以在其实例上使用“包含”方法来查找该列表中的内容?
问问题
34964 次
3 回答
25
你真的实现了 non-genericIEnumerable
还是 generic IEnumerable<T>
?如果您可以实现通用的,您的生活将变得更加简单 - 因为您可以使用LINQ to Objects,它确实有一个Contains
扩展方法。
Cast
否则,您可能会使用or将非泛型转换为泛型OfType
,例如
bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);
如果您只是实现了通用接口开始,那就更好了:)
于 2012-12-07T16:42:51.030 回答
24
IEnumerable<T>
不,界面中没有这样的方法。有一个extension method
你可以使用的。
using System.Linq;
进而:
IEnumerable<string> foos = new[] { "foo", "bar", "baz" };
bool IsThereABar = foos.Contains("bar");
于 2012-12-07T16:42:30.633 回答
1
public static bool Contains<T>(this IEnumerable source, T value)
{
foreach (var i in source)
{
if (Equals(i, value))
return true;
}
return false;
}
如果需要,可以添加自定义比较器作为参数 ti 扩展方法包含
于 2017-04-18T10:53:34.947 回答