IGrouping< T, T>不包含Leave的定义

本文关键字:Leave 包含 定义 IGrouping | 更新日期: 2023-09-27 18:10:11

我使用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).

IGrouping< T, T>不包含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