LINQ DB列表包含对象

时间:2018-05-13 16:20:34

标签: c# linq

我正在尝试编写一个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();
}

1 个答案:

答案 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()是不必要的,并且可以避免开销,所以最好不要在那里调用它。