我使用concat
。以下是我的relevant
代码,它给了我错误在Linq Select new
第一选项Leave
。我想在Linq中转换SQL查询。
Select Code,Sum(DAYS) as DAYS,LEAVE from
(SELECT CODE,SUM(DAY) AS DAYS,LEAVE FROM LV1
WHERE DATE>='01-Jan-12' AND CODE='1'
GROUP BY CODE,LEAVE
Union ALL
select CODE,SUM(DAYS1),Leave from LV2 WHERE
and code= '1'
GROUP BY CODE,LEAVE) A
Group by LEAVE,Code
代码错误:-
var data = ctx.tblLV1.Where(m => m.Code == "1" && m.Date >= fromDate)
.GroupBy(m => m.Leave)
.Select(m => new
{
Leave = m.Leave,
Days = m.Sum(k => k.Days)
})
.Concat(
ctx.tblLV2.Where(m => m.Code == "1")
.GroupBy(m => m.Leave)
.Select(m => new
{
Leave = m.Leave,
Days = m.Sum(k => k.Days1)
}));
//var data = data.GroupBy(m=>m.Leave).
当您在LINQ中执行GroupBy时,它返回IEnumerable<IGrouping<T,T>>
,其中第一个T是您为分组数据指定的属性的数据类型,称为Key
,下一个T是列表的类型。你不能直接获取属性。你必须使用Key
:-
ctx.tblLV1.Where(m => m.Code == "1" && m.Date >= fromDate)
.GroupBy(m => m.Leave)
.Select(m => new
{
Leave = m.Key,
Days = m.Sum(k => k.Days)
})
同样,您需要在另一个查询中指定Key