C# 使用LINQ在windows窗体中显示多对多关系中的数据

C# 使用LINQ在windows窗体中显示多对多关系中的数据,c#,winforms,linq,C#,Winforms,Linq,我的数据库中存储了三个表:Speaker、Language、和link\u speaks。它们三个都有多个属性link\u speaks用于将演讲者连接到语言“多对多”关系。主键/外键关系在sql数据库中定义 表信息: 我想要一个windows窗体,以Speaker的形式显示每个条目的信息,以及他/她所说的语言表,这些语言表取自其他两个表 结果看起来会很多(摘自我发现的) 如何实现这一点?在主页上设置绑定导航器,使数据源成为整个tbl_人员。 然后将datagridview上的bindings

我的数据库中存储了三个表:
Speaker
Language
、和
link\u speaks
。它们三个都有多个属性
link\u speaks
用于将
演讲者
连接到
语言
“多对多”关系。主键/外键关系在sql数据库中定义

表信息:

我想要一个windows窗体,以
Speaker
的形式显示每个条目的信息,以及他/她所说的语言表,这些语言表取自其他两个表

结果看起来会很多(摘自我发现的)


如何实现这一点?

在主页上设置绑定导航器,使数据源成为整个tbl_人员。 然后将datagridview上的bindingsource设置为与该人员的语言相关的人员对象

这里有一些代码来完成第一部分(虽然不是完美的,但你已经了解了大概的意思):


然后添加一个事件处理程序,在您的人员发生变化时更新datagridbindingsource.DataSource(无论您希望如何处理;如下拉列表或其他什么)

请提供您的表的定义,并让我们知道您希望在Christos上显示什么(哪些列)@Christos,如下所示?
using (var data = yourdataentities())
{
   var person = data.Personen.FirstOrDefault();
   formbindingsource.DataSource = person;
   var languagesGuySpeaks = from p_x_l in data.link_spricht
                            join language in data.Sprachen on language.Id equals p_x_l.SprachID
                            where p_x_l.Person_ID == person.Id
                            select language;


   datagridbindingsource.DataSource = languagesGuySpeaks;
}