次のようなものが必要です:
var myList;
foreach (MyObject myObject in myObjects)
{
myList = myList.Union(myObject.Items.Cast<Item>());
}
しかし、空の変数を初期化できないようです。ソリューション?
var
そのようには機能しません。型推論を使用して、等号の後にあるものに基づいて型を割り当てます。
myList
また、初期化する前にアクセスしようとすると、null 例外がスローされます(それは になりますnull
)。これを試して:
IEnumerable<Item> myList = myObjects.SelectMany(m => m.Items.Cast<Item>());
Union
IEnumerable<Item>
内部を使用していることを考慮して、受け取るのと同じタイプを返します。
var myList = Enumerable.Empty<Item>();
これは問題ではありません。初期化されていないローカル変数Union
から読み取ろうとする問題です。
あなたが使用することができます:
var myVar = Enumerable.Empty<Item>();
...またはSelectMany
、 mattytommo で示されているように使用するだけで、おそらく を呼び出して、Distinct()
個別の要素だけを取得します (そうするようUnion
に)。
変数の型を指定する必要があり、空のコレクションから開始する必要があります。次に例を示します。
IEnumerable<Item> myList = new List<Item>();
コンパイラは、作成したい型を認識できないため、
var myList;
型が何であるかをコンパイラに伝えるには十分ではありませんmyList
。できるよ
List<Item> myList;
しかし、 を呼び出すと.Union
NullReferenceException が返されます。
それでは、空のリストから始めてみませんか
List<Item> myList = new List<Item>
またはIEnumerable?
IEnumerable<Item> myEnumerable = Enumerable.Empty<Item>()