【问题标题】:Linq to Entities Many to Many Query WPF DataGridLinq to Entities 多对多查询 WPF DataGrid
【发布时间】:2012-03-25 12:39:37
【问题描述】:

我在 SQL Server 2008 中有一个多对多关系:

学生表(StudentID 为 PK,StudentName)

课程表(CourseID 为 PK,CourseName)

StudentCourse(纯连接表)(StudentID、CourseID 都在复合 PK 中)。

在 Visual Studio 2010 中:

实体模型设置正确。 我有一个 DataGrid 绑定到:

<CollectionViewSource x:Key="CourseViewSource" d:DesignSource="{d:DesignInstance my:Course, CreateList=True}" />"

这允许我将 dataGrid 列属性设置为两个表:CourseName 和 Student.StudentName。

我需要在同一个数据网格上显示他们所在的所有课程中的所有学生。

我的查询是:

    ` var context = new context();
      var List = from y in context.Courses
         from z in y.Students
         select y;
         dataGrid1.ItemsSource = List;`

此查询返回所有课程表 Student 中的第一个学生并重复,但我无法显示正在学习相同课程和其他课程的其他学生。

问题: 如何使用 linq 将查询更改为实体。我已经尝试了很多天。

提前致谢。

【问题讨论】:

    标签: datagrid linq-to-entities many-to-many


    【解决方案1】:

    尝试包含,如下所示:

    var List = (from y in context.Courses.Include("Students") select y).ToList();
    

    【讨论】:

    • 您好,感谢您的快速回复。您的查询不会重复同一个学生并显示其他学生在其他课程中,但是当一个学生与另一个学生在同一门课程中时,此查询仅显示第一个学生和我需要显示所有课程中的所有学生(连接表中的每个关系)。
    • 结果应该是一个包含所有学生的列表,每个学生应该有一个他们所在的所有课程的列表。从学生列表中,您应该能够遍历每个学生和每个课程的每个student 获取所有学生和所有课程。有关包含的更多信息,请参阅this
    • 你是对的 Eirik,数据网格显示了你所描述的内容。我将通过提供的链接进行迭代,一旦我发现它,我将发布代码并将这个问题标记为已回答。感谢您的指导。
    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2011-04-12
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多