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

本文关键字:记录 一个 连接 框架 实体 | 更新日期: 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()
相关文章: