0

結合された 2 つのジェネリック リストがあります。両方とも type の listA と listB としList<SomeType>ます。

listA.Union(listB);

和集合の型System.Linq.Enumerable.UnionIterator<string>は であり、 と同じではありませんList<SomeType>

私はキャストを試みました:

listA.Union(listB).ToList<SomeType>();

(List<SomeType>)listA.Union(listB);

どちらも失敗します。結果を新しいリストに追加できると考えて、ForEach() にアクセスしようとしました。.Foreach() は利用できません。

従来の foreach を使用して、各項目をList<SomeType>変数に追加することができました。ただし、型の変数に割り当てて、1 行で変換できるラムダ ステートメントはありList<SomeType>ますか?

4

2 に答える 2

4

ToListListinメソッドを明示的にキャストする必要はありません。両方のリストが同じタイプの場合はToList、最後に同じタイプのリストを取得するだけです。

List<MyClass> listA = new List<MyClass>();
List<MyClass> listB = new List<MyClass>();
List<MyClass> temp = listA.Union(listB).ToList(); //Just do ToList at the end. 

ToListメソッドでタイプを明示的に指定することも同様に機能するはずです。なぜ機能しないのかわかりません。

于 2012-10-02T04:26:54.897 に答える
0

UnionIEnumerable<T>ではなく、インターフェイスの拡張メソッドであるList<T>ため、リストを接続しようとしていることを認識または気にしないため、ToList明示的に呼び出さない限り、結果としてリストを作成しません。

あるリストを別のリストに「添付」したい場合は、AddRange代わりにメソッドを使用することをお勧めします。

于 2012-10-02T04:55:08.103 に答える