C# 我们是否有一个;包括「;IEnumerable中的方法

C# 我们是否有一个;包括「;IEnumerable中的方法,c#,C#,我的代码中有一个类已经从IEnumerable派生。 我想知道是否有一种方法可以在其指令上使用“Contains”方法来查找该列表中的某个内容?不,界面中没有这样的方法。有一个想法,你可以使用 using System.Linq; 然后: IEnumerable<string> foos = new[] { "foo", "bar", "baz" }; bool IsThereABar = foos.Contains("bar"); IEnumerable foos=new[]{

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

不,界面中没有这样的方法。有一个想法,你可以使用

using System.Linq;
然后:

IEnumerable<string> foos = new[] { "foo", "bar", "baz" };
bool IsThereABar = foos.Contains("bar");
IEnumerable foos=new[]{“foo”、“bar”、“baz”};
bool IsThereABar=foos.Contains(“bar”);
您真的实现了非泛型的
IEnumerable
,还是泛型的
IEnumerable
?如果您可以实现泛型方法,那么您的生活将变得简单得多,因为您可以使用泛型方法,它确实有一个扩展方法

否则,您可能会使用
Cast
of type
将非泛型转换为泛型,例如

bool found = nonGeneric.Cast<TargetType>().Contains(targetItem);
bool found=nonGeneric.Cast().Contains(targetItem);
如果您刚开始实现通用接口会更好:)

publicstaticbool-Contains(这个IEnumerable源代码,T值)
{
foreach(源中的var i)
{
if(等于(i,值))
返回true;
}
返回false;
}
如果需要,可以将自定义比较器添加为ti扩展方法包含的参数

public static bool Contains<T>(this IEnumerable source, T value)
    {
        foreach (var i in source)
        {
            if (Equals(i, value))
                return true;
        }
        return false;
    }