文章出處
文章列表
在進行統計時,尤其是按月進行統計,由于我們采用的時間是一個2015-12-12日這種,所以在linq你無法進行拆分,你拆分了在發到SQL時也會報錯,因為SQL那邊更新不需要你.net的方法,人家SQL只認自己的方法,哈哈,這也是正常的,為了解決這個問題,我們有時也需要使用純SQL,當前也是基于EF的,通過EF的上下文把SQL語句發到數據庫。
下面是一個比較復雜的統計,按月把某個用戶的某個任務進行求和及求總數的統計,看一下代碼
var idArr = user_FighterRepository.GetModel(i => i.ParentID == companyId).Select(i => i.UserID).ToList(); string para= string.Join(",", idArr); var linq = Db.Database.SqlQuery<FighterTaskTotalDTO>( @"SELECT CONVERT(CHAR(7), Day, 120) as TotalDate, COUNT(*) as TaskCount, FighterID , SUM(FinishedNumber) as FinishedCount FROM dbo.Count_Fighter_ByDay GROUP BY FighterID , CONVERT(CHAR(7), Day, 120) HAVING FighterID IN ("+para+")"); return linq.ToList();
看你下SQL的結果
再看一下網頁上顯示的結果
最后需要注意一點,就是你的SQL語句的每個字段必須要有別名,如你的count(*)統計,需要為它起的別名,并且你的別名要和EF映射的實體屬性對應!
文章列表
全站熱搜