按LINQ中实体的两个列表分组[已关闭]

vngu2lb8  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(138)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。

这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
四个月前关门了。
Improve this question
因此我有一个实体,同其他实体有关系:教师与学生

public class Lesson
{
    public int Id { get; set; }

    public List<Teacher> Teachers { get; set; }
    public List<Student> Students { get; set; }

    public Lesson()
    {
        Students = new List<Student>();
        Teachers = new List<Teacher>();
    }
}
public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }

    public List<Lesson> Lessons { get; set; }

    public Student()
    {
        Lessons = new List<Lesson>();
    }
}
public class Teacher
{
    public int TeacherId { get; set; }
    public string Name { get; set; }

    public List<Lesson> Lessons { get; set; }

    public Teacher()
    {
        Lessons = new List<Lesson>();
    }
}

我正在运行一个查询,将这3个表连接到这个,一切都可以得到所需的输出。但是现在我需要将教师和学生分组在课程下。下面的代码确实(明显地)将学生分组,但是当我对教师进行分组时,它不能正常工作。

var result = lessons.GroupBy(l => l.Id).Select(g => {
  var groupedLesson = g.First();
  groupedLesson.Students = g.Select(l => l.Students.Single()).DistinctBy(s => s.Id).ToList();
  //groupedLesson.Teachers = g.Select(l => l.Teachers.Single()).DistinctBy(t=>t.TeacherId).ToList();
  return groupedLesson;
});

查询输出:

我的代码生成以下输出:

[
  {
    "id": 1,
    "teachers": [
      {
        "teacherId": 0,
        "lessons": []
      }
    ],
    "students": [
      {
        "id": 1,
        "lessons": []
      },
      {
        "id": 2,
        "lessons": []
      }
    ]
  }
]

所需输出:

[
  {
    "id": 1,
    "teachers": [
      {
        "teacherId": 1,
        "lessons": []
      },
      {
        "teacherId": 3,
        "lessons": []
      }
    ],
    "students": [
      {
        "id": 1,
        "lessons": []
      },
      {
        "id": 2,
        "lessons": []
      }
    ]
  }
]
wswtfjt7

wswtfjt71#

愚蠢的错误,教师的模型,有一列“教师Id”,这是没有Map,所以所有的条目类型教师有id = 0,所以他们不能区分的id。

相关问题