我有一个名为A的表是master,另一个名为B的表是详细信息
在A和B中,我有以下记录:
表格:
Id Name Family
-------------------------
1 Ebrahim Golkhani
2 Javad Nasiri
B表中的:
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中的记录是动态的,这意味着因子名称不是静态的。
我想在Entity Framework中实现它。
答案 0 :(得分:0)
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()
答案 1 :(得分:0)
你可以试试这个。
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,
};
请注意,这不是在验证表中的空值,我将留给您添加这些验证
附加工作Sample。