我有两个带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的价值是重复的,任何人都可以帮助我?
谢谢
答案 0 :(得分:0)
步骤:
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
};