文章出處

回到目錄

在進行統計時,尤其是按月進行統計,由于我們采用的時間是一個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映射的實體屬性對應!

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()