实体框架-将多个记录连接到一个记录
本文关键字:记录 一个 连接 框架 实体 | 更新日期: 2023-09-27 18:12:41
我有一个名为A的表是master,另一个名为B的表是detail
在A和B我有以下记录:
表:
Id Name Family
-------------------------
1 Ebrahim Golkhani
2 Javad Nasiri
:
AId FactorName Value
------------------------
1 BaseSalary 1000
1 Tax 10
1 Insurance 20
2 BaseSalary 2000
2 Tax 50
2 Insurance 30
我想这样检索数据:
Name Family BaseSalary Tax Insurance ....
--------------------------------------------------------
Ebrahim Golkhani 1000 10 20
Javad Nasiri 2000 50 30
表b中的记录是动态的,这意味着因子名不是静态的。
我想在实体框架中实现这个
你可以试试这个。
var results = from g in tab2.GroupBy(k => k.AId)
join t1 in tab1 on g.Key equals t1.Id
select new
{
t1.Name,
t1.Family,
BaseSalary = g.SingleOrDefault(c=>c.FactorName.Equals("BaseSalary")).Value,
Insurance = g.SingleOrDefault(c => c.FactorName.Equals("Insurance")).Value,
Tax = g.SingleOrDefault(c => c.FactorName.Equals("Tax")).Value,
};
请注意,这不是验证表中的空值,我把它留给你来添加这些验证
随附工作样本
tableA.Join(TableB,x=>x.Aid,y=>y.Aid, (x,y) => new { name = x.name,family = x.family,
BaseSalary = y.Where(x.FactorName=="BaseSalary").First().Value,
Tax = y.Where(x.FactorName=="Tax").First().Value,
Insurance = y.Where(x.FactorName=="Insurance").First().Value
//.....
}).ToList()