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;
}