c# - 防止linq组中的重复和并加入

标签 c# linq

我有两个带有 linq 连接查询的表:

例如:

MandaysReal
date       | mandays
----------------------
2015/10/15 | 5
2015/10/15 | 7

EstateAttendance
date       | mandays
----------------------
2015/10/15 | 2

然后我加入这个查询并按日期分组:

var data = from m in db.ManDaysReals

       join a in db.EstateAttendances on m.Date equals a.Date
       group new { M = m, A = a } by m.Date into g
       where g.FirstOrDefault().A.Date >= startDate && g.FirstOrDefault().A.Date <= endDate
       && g.FirstOrDefault().A.Block.Section.Id == SectionId

       select new CompareMandaysViewModel
       {
          Date = g.FirstOrDefault().A.Date,
          HKMandays = g.Sum(x => x.M.Mandays),
          HKAttendance = g.Sum(x => (decimal)x.A.mandays),
       };

结果显示如下:

CompareMandaysViewModel
date       | HKMandays | HKAttendance
2015/10/15 |    12     |      4 <-- why the result is 4 ?

HKAttendance 的值重复了,谁能帮帮我?

谢谢

最佳答案

步骤:
1.将每个表中的记录分别分组成列表
2. 稍后加入他们
看下面的例子

        var xp = (from p in db.ManDaysReals
                  group p by p.Date into g
                  select new
                  {
                      Date = g.Key,
                      ManDays = g.Sum(p => p.ManDays)
                  }).ToList();

        var xa = (from p in db.EstateAttendances
                  group p by p.Date into g
                  select new
                  {
                      Date = g.Key,
                      ManDays = g.Sum(p => p.ManDays)
                  }).ToList();

        var xt =  from p in xp
                  join a in xa on p.Date equals a.Date
                  select new CompareMandaysViewModel
                  {
                      Date = p.Date,
                      HKMandays = p.ManDays,
                      HKAttendance = a.ManDays
                  };

关于c# - 防止linq组中的重复和并加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33210909/

相关文章:

c# - 其中包含 List<> 的模型..这如何与 Entity Framework 一起工作?

c# - 使用MVVM将Rectangle和TextBlock动态添加到 Canvas

c# - 添加 Azure Function (v3) 绑定(bind)到 BlobTrigger 的 RequestTelemetry 的自定义属性

c# - 如何在 Linq 中获得左外连接?

c# - 从 linq 中选择单个值

c# - 无效参数 - 继承的接口(interface)有效,但隐式转换则不然。是什么赋予了?

c# - 如何使用环境路径查找可能不完全合格的文件?

c# - 按总数分组

.net - 如何生成完全唯一的查找?

c# - 动态表达式和动态字符串操作