2011-02-17 42 views
0

我已經在這個論壇回覆讀很多組,但我要問,反正:LINQ組由不工作

var errandQuery = (from t in db.TimereportSet 
        group t by new { t.Errand.Name, t.Date } into g 
        select new ErrandTime { Date = g.Key.Date, Value = g.Sum(e => e.Hours) }).ToList(); 

爲什麼不是這個工作。我收到以下例外情況:"Unknown column 'GroupBy1.K1' in 'field list'"

異常來自mySQLClient。

+4

什麼是生成的SQL查詢?添加一行`db.Log = Console.Out;`將查詢記錄到Visual Studio中的輸出窗口。 – 2011-02-17 21:23:01

+1

這可能是一個提供者(mySQLClient)錯誤。 – Greg 2011-02-17 22:38:52

回答

1

你不會選擇小時進入g,所以他們不在那裏總結。

我不知道你的數據是什麼樣子,但試試這個:

編輯:

var errandQuery = (from t in db.TimereportSet      
        group t by new { t.Errand.Name, t.Date } into g     
        select new ErrandTime { Date = g.Key.Date, Value = g.Sum**(t => t.Hours)** }).ToList(); 

對不起,我的第一反應是不正確的。

你LINQ查詢是正確的,除了最後的權利---你正在使用e ..你需要引用你選擇的項目...... 所以你需要在你的lambda表達式中使用t,而不是e

0

我把它寫成了一個評論,但它應該是一個答案,這是一個在使用LinQ的mySQL中確認的錯誤。是否有使用變通,或的ObjectQuery直接SQL或別的東西同樣的事情查詢使用實體框架的另一種方式:

var errandQuery = (from t in db.TimereportSet 
        group t by new { t.Errand.Name, t.Date } into g 
        select new ErrandTime { 
         Date = g.Key.Date, 
         Value = g.Sum(e => e.Hours)}).ToList(); 

,或者我應該創建這個問題,一個新的職位?