-2

我有一个如下列表 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 行收到一条错误消息 -

异常 - 参数 null 异常
无法将 void 分配给隐式类型变量

我做错了什么,我该如何解决?

谢谢!

4

3 回答 3

2

使用 Concat 而不是 AddRange 解决了它

var schools = act.Concat(sch);  
于 2017-03-22T17:14:50.967 回答
0

您的特定问题源自空值。你sch要么为空,要么包含一个空值。而不是使用AddRange,它将修改一个集合,附加到另一个集合的末尾。您可能想要利用Concat. 这将创建一个单独的集合实例,并尝试在不修改数据的情况下加入它们。所以 anull不会妨碍 a 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);
于 2017-03-22T21:07:48.233 回答
-1

函数“AddRange”将列表 sch 添加到列表行为中,并且是无效的,它不返回任何内容。我猜你想要的是这样的:

        List<...> schools = new List<...>(act);
        schools.AddRange(sch);
于 2017-03-22T14:47:45.483 回答