我正在尝试编写一个linq查询,但它不起作用。我的DB包含一个EventDetails表,我从那里得到学生,然后我想让foreach学生成为班级(n:1)。所以我迭代类表并检查学生列表是否包含学生。我做错了什么?
守则:
var students = db.EventDetails
.Include("Room")
.Include("Task")
.Include("Student")
.Where(x => x.Student != null)
.Select(x => x);
foreach (var s in students)
{
string studentClass = db.Class
.Include("Students")
.ToList()
.Where(x => x.Students.Contains(s.Student))
.Select(x => x.Name).ToString();
}
答案 0 :(得分:1)
您收到的是您显示的输出,因为您在ToString()
上拨打IEnumerable<string>
而是使用String.Join
来获得预期结果,即
string studentClass = string.Join(", ",db.Class
.Include("Students")
.Where(x => x.Students.Contains(s.Student))
.Select(x => x.Name));
此外,在查询过程中调用.ToList()
是不必要的,并且可以避免开销,所以最好不要在那里调用它。