将空元素添加到列表中

时间:2013-03-25 11:32:40

标签: c# linq entity-framework

我有清单:

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 个答案:

答案 0 :(得分:2)

您需要在声明ToList()的行中将AsEnumerable()替换为lst

问题是lst的类型为List<anonymous type>,但Union返回IEnumerable<anonymous type>。无法将IEnumerable<T>分配给List<T>类型的变量。

使用AsEnumerable()制作lst类型的IEnumerable<anonymous type>变量。

答案 1 :(得分:2)

将您的最后一行更改为使用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);

答案 2 :(得分:1)

尝试使用AddRange()方法,它取代IEnumerable<T>而不是您的类型FirstList<T>.Union(SecondList<T>)

lst.AddRange(yourIEnumerable);

答案 3 :(得分:0)

如何:

Filials.Add(new { Name = string.Empty, FilialId = (Guid?)null })