2009-05-19 126 views
1

我遇到了LINQ問題,我希望有人能向我解釋爲什麼。我有這樣的代碼:按Linq問題分組

 List<Spec> specs = GetSpecs(userObject, seasonID, partnershipID); 

     var query = from s in specs 
        where (DateTime)s.FinalApprovedDate != null 
        && !((DateTime)s.FinalApprovedDate).Equals(DateTime.Parse("1/1/1900 12:00:00 AM")) 
        group s by s.ForCompanyID into g 
        select new 
        { 
         Vendor = g.Key, 
         Avg = g.Average(s.FinalApprovedDate.Subtract((DateTime)s.Created_Date).Days) 
        }; 

我想從這個查詢檢索在天創建日期和每個公司的最終批准的日期之間的平均差異爲代表BYT的ForCompanyID當日期不爲空或'1/1/1900'。我的問題是,我無法弄清楚如何從這個查詢中獲取這些數據。從我讀過的東西我相信這是正確的語法,但我得到一個「名稱」不存在於新的s值下的當前上下文中,我也在這裏用g來試試這個,但那不是有值或者有什麼想法

+0

你可能要比較DateTime.MinValue,而不是DateTime.Parse(「1/1/1900 12:00: 00 AM「)。根據所使用的LINQ」風味「,可能會爲每個項目比較執行Parse()。 – Lucas 2009-05-19 15:27:00

+0

...和(DateTime)s.FinalApprovedDate不會爲空,DateTime是不可爲空的值類型 – Lucas 2009-05-19 15:27:58

回答

7

嘗試改變倒數第二行:?

Avg = g.Average(s => s.FinalApprovedDate.Subtract((DateTime)s.Created_Date).Days)