如何在IEnumerable对象上使用linq contains方法

时间:2017-03-22 20:21:36

标签: c# linq

我想在实现IEnumerable的对象上使用Linq的contains方法,但是无法弄清楚

    //
    // Summary:
    //     Represents a collection of form fields.
    [DefaultMember("Item")]
    public class FormFieldList : IEnumerable
    {

        public FormField this[string name] { get; }

        public FormField this[int index] { get; }

        public int Count { get; }

        public FormField Owner { get; }


        public int Add(FormField formField);

        public void DrawKidReferences(DocumentWriter writer);

        public IEnumerator GetEnumerator();

        public TextFieldList GetTextFields();

        public void Remove(FormField field);
}

1 个答案:

答案 0 :(得分:1)

以下是Contains<TSource>方法的定义:

public static bool Contains<TSource>(
    this IEnumerable<TSource> source,
    TSource value
)

正如您所看到的那样,为了使用此方法(与CastOfType除外的其他LINQ扩展方法一样),您的类应该实现通用接口IEnumerable<T>

如果您知道枚举器返回的项目类型(假设它是FormField),那么您可以将源序列项目转换为该类型并获得IEnumerable<FormField>

formFieldList.Cast<FormField>().Contains(someFormField)