5

私がジェネリックを持っている場合IEnumerable<int>ToList()またはToArray()またはそれに適用するだけFirstOrDefault()です。これらのメソッドを非ジェネリックに適用する方法はIEnumerable?

4

3 に答える 3

9

いくつかのオプションがあります。

  1. 列挙型のすべてのオブジェクトが同じ型であることがわかっている場合は、それをジェネリックにキャストできますIEnumerable<YourType>。最悪の場合、いつでも使用できますobject

    object first = enumerable.Cast<object>().First();
    
  2. または、列挙子を使用して、1 つのステップを作成し、現在の要素を取得できます。

    IEnumerator enumerator = enumerable.GetEnumerator();
    enumerator.MoveNext();
    object first = enumerator.Current;
    
于 2013-07-18T12:06:51.357 に答える
1

ここには 2 つのオプションがあります。

  1. @Danier Gimenez が提案した質問に従って、Cast<TResult>メソッドを利用してください。キャストの後、メソッドを適用できる一般的な列挙型を取得しますFirst()。これは、最も単純な実装でもあります。

  2. GetEnumerator()を与えるメソッドを使用しますIEnumerator。そして、ここからコレクションを反復処理できます。から、プロパティをMoveNext()使用して最初の要素を取得できます。Current

編集: アンドレイは私の前にいました。

于 2013-07-18T12:11:11.867 に答える
1

このサンプルコードを見るのは簡単です

IEnumerable コレクション。--- ここにコレクションを入力します--- collection.OfType().ToList() または collection.OfType().ToArray collection.OfType().ToList() または collection.OfType().ToArray() (int をフィルターします) /MyClass) 型のオブジェクトをリストまたは配列に変換します。

于 2013-07-18T12:12:11.083 に答える