如何在c#中一起添加两个List <class>?

时间:2017-06-07 10:09:26

标签: c#

我想要连续两个List<Student>

Student只是一个包含一些属性的类。

我还有另一个Form创建Student并填充List<Student>

从那里,当StudentCreator关闭时,我希望List<Student>中的StudentCreator与主要表单中的List<Student>合并。有效更新主列表。

这是我遇到问题的代码的主要部分,我收到错误消息称我无法将某些IEnumerable<something>转换为List<something>

private void update_students(addStudent s)
        {
            Form activeForm = Form.ActiveForm;
            if(activeForm == this)
            {
                tempList = s.StudentList;
                studentList_HomeForm = tempList.Concat(tempList);
            }
        }

这是给出错误的主线

tempList.Concat(tempList)

如何解决此错误?

2 个答案:

答案 0 :(得分:5)

tempList.Concat返回一个可枚举的东西,你可以迭代的东西。如果要将其转换为列表,可以调用ToList()

var newList = tempList.Concat(tempList).ToList();
// you are basically copying the same list... is this intentional?

您可以采取的另一种方法是创建一个新列表,迭代现有列表并将它们添加到新创建的列表中:

List<Student> newList = new List<Student>(firstList); // start of by copying list 1

// Add every item from list 2, one by one
foreach (Student s in secondList)
{
    newList.Add(s);
}

// Add every item from list 2, at once
newList.AddRange(secondList);

答案 1 :(得分:2)

您可以使用AddRange方法 - https://msdn.microsoft.com/en-us/library/z883w3dc(v=vs.110).aspx

studentList.AddRange(tempList);