>我有一个列表A如下
var act= (from a in _db.Activities
where a.UserID == userid
select new SchoolDetail
{
SchoolName = a.School,
SchoolCode = a.SchoolID
}).Distinct().ToList();
然后我有另一个列表列表 B
var sch= (from s in _db.Schools
where s.UserID == userid
select new SchoolDetail
{
SchoolName = s.SName,
SchoolCode = s.SCode
}).Distinct().ToList();
现在我想将列表 B 附加到列表 A,我尝试使用 AddRange -
var schools = act.AddRange(sch);
但是我在AddRange行上收到错误消息-
异常 - 参数空异常
无法将 void 分配给 隐式类型变量
我做错了什么,我该如何解决?
谢谢!
使用 Concat 而不是 AddRange 解决了这个问题
var schools = act.Concat(sch);
您的特定问题源自空值。 您的sch
要么为空,要么包含空。 而不是使用 AddRange
,这将修改一个集合,附加到另一个集合的末尾。 您可能希望使用Concat
。 这将创建集合的单独实例,并尝试在不修改数据的情况下联接它们。 所以null
不会妨碍concat
.
否则,要解决您的特定问题,您需要执行空检查。
var school = ...;
var student = ...;
var sample = school.Concat(student);
var school = ...;
var student = ...;
var filter = school.Where(d => d != null);
var sample = student.AddRange(school);
函数 "AddRange" 将列表 sch 添加到列表行为中,并且是一个 void,它不返回任何内容。我想你想要的是这样的:
List<...> schools = new List<...>(act);
schools.AddRange(sch);