2016-11-25 12 views
-4

は、だから私はSystem.Linq名前空間と方法Any()を使用しますが、それはだ、何らかの理由で私にエラーを示しています:LINQの名前空間と任意の方法()

ArrayList does not contain a definition for Any...

私は配列を別の配列から任意の項目が含まれているかどうかを確認しようとしていますが。なぜ、私のコードを投稿することはできません。あなたは問題が何であるかを知りたいと思っています。

答えて

2

ArrayListを使用しないでください。代わりにListを使用してください。

Becouse ArrayListは例えばList<T>ようなインターフェイスを実装しIEnumerable<T> collecionsでSystem.Linq仕事からIEnumerable<T>interfaceジェネリックと拡張methondsを実装していません。

+0

少なくとも現在の形式ではありません。 'ArrayList'は' IList'を実装しますが、IList を実装していません。これは 'System.Linq'のextensiosnメソッドで使われる' IEnumerable 'を実装しています。 – kiziu

+0

@kiziu申し訳ありません、 –

+0

今、私はそれを得る – Zumm

1

ArrayListは緩やかに型付けされたコレクション(reference sourceで参照)であると強く型付けされたコレクションを(reference sourceに参照)が必要ですEnumerable.Anyで使用することはできません。

ところで、疎な型のコレクションは使用しないでください。代わりに汎用コレクションを使用してください。

0

非ジェネリックコレクションは使用しないでください。 これを本当にしたいのであれば、コレクションをIEnumerableに変換するためのヘルパーメソッドを書くことができます。

static void Main(string[] args) 
    { 
     var list = new ArrayList {3, "test", null}; 

     var result = AsEnumerable(list).Any(x => x == null); 
    } 

    private static IEnumerable<object> ToEnumerable(ArrayList data) 
    { 
     var enumerator = data.GetEnumerator(); 
     while (enumerator.MoveNext()) 
      yield return enumerator.Current; 
    } 

しかし、これは単なる例です。 ArrayListの代わりにListを使用してください

+0

または単に['Enumerable.Cast'](https://msdn.microsoft.com/en-us/library/bb341406(v = vs .110).aspx)。 – kiziu

関連する問題