实体框架 - 将多条记录连接到一条记录

时间:2015-09-15 03:29:41

标签: c# entity-framework

我有一个名为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中实现它。

2 个答案:

答案 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

相关问题