我有清单:
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
在最后一行。
将元素添加到列表的正确方法是什么?
答案 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 })