4

私はリストを持っています:

var Filials = Db.FILIALS.AsEnumerable().Where(x => x.PREFIX > 0).Select(x => new { Name = string.Format("{0} {1}", x.PREFIX, x.NAME), FilialId = (Guid?)x.FILIALID }).OrderBy(x => x.Name).ToList();

このリストに空の要素を追加する必要があります。私はこの変種を試します:

var lst = new[] { new { Name = string.Empty, FilialId = (Guid?)null } }.ToList();
var Filials = Db.FILIALS.AsEnumerable().Where(x => x.PREFIX > 0).Select(x => new { Name = string.Format("{0} {1}", x.PREFIX, x.NAME), FilialId = (Guid?)x.FILIALID }).OrderBy(x => x.Name).ToList();
lst = lst.Union(Filials);

しかし、エラーが発生します:

タイプSystem.Collection.Generic.IEnumerableをSystem.Collection.Generic.Listに暗黙的に変換することはできません

最後の行に。

リストに要素を追加する正しい方法は何ですか?

4

4 に答える 4

3

を宣言する行でToList()を置き換える必要があります。AsEnumerable()lst

問題は、それlstはタイプですList<anonymous type>が、をUnion返すことIEnumerable<anonymous type>です。タイプのIEnumerable<T>変数に割り当てることはできませんList<T>

を使用AsEnumerable()すると、lstタイプの変数が作成されますIEnumerable<anonymous type>

于 2013-03-25T11:34:29.383 に答える
3

AddRangeメソッドを使用するように最後の行を変更します。

var lst = new[] { new { Name = string.Empty, FilialId = (Guid?)null } }.ToList();
var Filials = Db.FILIALS.AsEnumerable().Where(x => x.PREFIX > 0).Select(x => new { Name = string.Format("{0} {1}", x.PREFIX, x.NAME), FilialId = (Guid?)x.FILIALID }).OrderBy(x => x.Name).ToList();
lst.AddRange(Filials);
于 2013-03-25T11:34:57.367 に答える
2

AddRange()メソッドを試してください。IEnumerable<T>タイプが何であれ、の代わりになりますFirstList<T>.Union(SecondList<T>)

lst.AddRange(yourIEnumerable);
于 2013-03-25T11:38:44.400 に答える
0

ちょうどどうですか:

Filials.Add(new { Name = string.Empty, FilialId = (Guid?)null })
于 2013-03-25T11:34:27.580 に答える