2015-08-27 38 views
-1

我正在使用concat。以下是我的relevant代碼,它給我錯誤Linq Select new第一個選項Leave。我想在Linq中轉換SQL查詢。IGrouping <T,T>不包含Leave的定義

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). 
+2

它應該不是'Leave = m.Leave',而是'Leave = m.Key' –

+0

你也忘了','兩次 – Bauss

回答

1

當你在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) 
          }) 

Simialrly,你需要指定其他查詢密鑰。

相關問題