1

次のようなものが必要です:

var myList;

foreach (MyObject myObject in myObjects)
{
    myList = myList.Union(myObject.Items.Cast<Item>());
}

しかし、空の変数を初期化できないようです。ソリューション?

4

5 に答える 5

7

varそのようには機能しません。型推論を使用して、等号の後にあるものに基づいて型を割り当てます。

myList また、初期化する前にアクセスしようとすると、null 例外がスローされます(それは になりますnull)。これを試して:

IEnumerable<Item> myList = myObjects.SelectMany(m => m.Items.Cast<Item>());
于 2013-03-06T14:23:20.447 に答える
2

UnionIEnumerable<Item>内部を使用していることを考慮して、受け取るのと同じタイプを返します。

var myList = Enumerable.Empty<Item>();
于 2013-03-06T14:24:29.587 に答える
2

これは問題ではありません。初期化されていないローカル変数Unionから読み取ろうとする問題です。

あなたが使用することができます:

var myVar = Enumerable.Empty<Item>();

...またはSelectMany、 mattytommo で示されているように使用するだけで、おそらく を呼び出して、Distinct()個別の要素だけを取得します (そうするようUnionに)。

于 2013-03-06T14:24:36.200 に答える
1

変数の型を指定する必要があり、空のコレクションから開始する必要があります。次に例を示します。

IEnumerable<Item> myList = new List<Item>();
于 2013-03-06T14:24:31.713 に答える
0

コンパイラは、作成したい型を認識できないため、

var myList;

型が何であるかをコンパイラに伝えるには十分ではありませんmyList。できるよ

List<Item> myList;

しかし、 を呼び出すと.UnionNullReferenceException が返されます。

それでは、空のリストから始めてみませんか

List<Item> myList = new List<Item>

またはIEnumerable?

IEnumerable<Item> myEnumerable = Enumerable.Empty<Item>()
于 2013-03-06T14:24:33.727 に答える