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是 typeList<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 回答