【问题标题】:Adding List - two different methods添加列表 - 两种不同的方法
【发布时间】:2013-04-17 02:13:02
【问题描述】:

我有一个教室列表,然后我得到那个教室里的学生列表。在这个方法中,我首先创建了一个 ClassRoom 列表。然后我得到那个教室里的学生名单。现在,当我尝试将学生列表添加到第一个列表时。我收到此错误。

List 的最佳重载方法匹配...具有无效参数

public static List<MyList> getRecords()
{
    int id = 10;
    int id2 = 20;
    List<MyList> ClassRooms = GetClassRooms(id);
    foreach(MyList Students in ClassRooms)
    {
        List<MyList> studentProfile = GetStudentProfile(id, Students.ID);
        foreach(MyList studentDetail in studentProfile) ClassRooms.Add(studentDetail);
    }   
    return ClassRooms;
}

我做错了什么?

更新 -

public class MyList
{
    public int ID;
    public string Class Number;
    public bool Active;
    public int StudentID;
    public string FirstName;
    public string LastName;
    public int TotalStudents;
}

【问题讨论】:

  • 天哪,这太伤痕累累了
  • @AndreCalil:可怕还是伤痕累累?
  • 尽管名称令人困惑,但存在一个问题:您无法在迭代列表时修改列表(例如添加新项目),就像使用 ClassRooms 所做的那样。
  • 那么,ClassRoomsMyList 类型的列表,可以是学生或学生详细信息?无论如何,安德烈是正确的。您在向列表添加新项目的同时迭代列表,这是行不通的。
  • 确实,你应该有一个Class 类和一个Student 类。 Class 将有一个 List&lt;Student&gt;

标签: c# list object appendto


【解决方案1】:

您可能需要重新考虑您的类结构和变量名称。我不确定 MyList 应该代表什么,学生或教室。不过,您可以使用 Select 语句解决手头的问题:

List<MyList> ClassRooms = GetClassRooms(id)
    .Select(classroom => GetStudentProfile(id, classroom.ID));
return ClassRooms;

这将获取教室列表中的每个班级,对其调用 GetStudentProfile,并将其添加到列表中。

【讨论】:

  • 感谢 Otaia... 虽然我最终使用了两个不同的类。您的解决方案不是一个坏主意。感谢您的回答
猜你喜欢
  • 2016-09-08
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 2016-11-12
  • 2021-10-25
相关资源
最近更新 更多