Linq 日期轉換

Whpitot發表於2018-03-03

Linq 日期轉換

應用背景
在統計每個月的消費總額時,用Linq寫表示式需要轉換日期為“yyyy-MM”對錶中的資料進行分組統計。
錯誤寫法:

    var spend = from s in Db.SpendRecord 
                group s by FSpendDate = s.FSpendate.ToString("yyyy-MM") into g
                select new {g.key.FSpendDate,TotalFigure = g.sum(s=>s.FFigure)};
複製程式碼

這樣寫會報錯誤:
LINQ to Entities不識別方法“System.StringToString()”,因為該方法無法轉換為儲存表示式。
應使用函式SqlFunctions對日期進行轉換。SqlFunctions.DateName方法 返回表示指定日期的指定日期部分的字串。

正確寫法:

    var spend = from s in Db.SpendRecord 
                group s by FSpendDate = 
                SqlFunctions.DateName("yyyy",FSpendDate) + "-" + 
                SqlFunctions.DateName("mm",FSpendDate)
                into g
                select new {g.key.FSpendDate,TotalFigure = g.sum(s=>s.FFigure)};
複製程式碼

2017-August 325.00
2017-December 454.50

相關文章