6

毎月のカウントを取得したいのですが、複数回発生した場合でも、カウントは 1 日 1 回までにする必要があります。正しく機能するSQLクエリがありますが、LINQに変換するのに問題があります-

select 
    count(DISTINCT DAY(date)) as Monthly_Count,
    MONTH(date) as Month,
    YEAR(date)
from 
    activity
where 
    id=@id
group by
    YEAR(date),
    MONTH(date) 

上記のクエリをLINQに変換するのを手伝ってくれる人はいますか。ありがとう!

4

2 に答える 2

8

@Rickによって指定されたGROUP BY および COUNT(DISTINCT) を使用する LINQ to SQLごとに、これは機能するはずです。

var query = from act in db.Activity
            where act.Id == id
            group act by new { act.Date.Year, act.Date.Month } into g
            select new
            {
                MonthlyCount = g.Select(act => act.Date.Day).Distinct().Count(),
                Month = g.Key.Month,
                Year = g.Key.Year
            };

L2Sがちゃんとインナー変換できるかはわかりませんg.Select(act => act.Date.Day).Distinct.Count()

于 2011-07-26T20:47:24.420 に答える
0
var results = db.activities.Where(a => a.id == myID)
                           .GroupBy(a => new 
                                         {
                                             Month = a.date.Month, 
                                             Year = a.date.Year
                                         })
                           .Select(g => new
                                        {
                                            Month = g.Key.Month,
                                            Year = g.Key.Year,
                                            Monthly_Count = g.Select(d => d.date.Day)
                                                             .Distinct()
                                                             .Count()
                                        })
于 2011-07-26T20:48:01.370 に答える