将列表添加到c#中的另一个列表

时间:2017-03-22 14:40:36

标签: c# list addrange

我有一个列表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();  

现在我想将List B附加到List A,我尝试使用AddRange -

var schools = act.AddRange(sch);  

但是我在AddRange行上收到错误消息 -

  

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

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

谢谢!

3 个答案:

答案 0 :(得分:1)

使用Concat而不是AddRange解决它

var schools = act.Concat(sch);  

答案 1 :(得分:0)

您的特定问题源自空值。您的sch为null或包含null。而不是利用将修改集合的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);

答案 2 :(得分:-1)

功能" AddRange"将列表sch添加到列表行为,并且是空的,它不会返回任何内容。我想你想要的是:

        List<...> schools = new List<...>(act);
        schools.AddRange(sch);