我们有一个"包含" IEnumerable中的方法

时间:2012-12-07 16:41:30

标签: c#

我的代码中有一个类已经从IEnumerable派生了。 我想知道是否有一种方法可以在其instnaces上使用“Contains”方法来查找该列表中的某些内容?

3 个答案:

答案 0 :(得分:19)

真的实施非通用IEnumerable还是通用IEnumerable<T>?如果你可以实现通用的那个,那么你的生活将变得更加简单 - 因为你可以使用LINQ to Objects,它确实有Contains扩展方法。

否则,您可以使用CastOfType将非通用转换为通用,例如

bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);

如果你刚刚开始实现通用接口,那将会更好:)

答案 1 :(得分:18)

不,IEnumerable<T>界面中没有这样的方法。虽然你可以使用extension method

using System.Linq;

然后:

IEnumerable<string> foos = new[] { "foo", "bar", "baz" };
bool IsThereABar = foos.Contains("bar");

答案 2 :(得分: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扩展方法包含