5

ResolvedDateとを含む SQL Server テーブルを取得しましたResolvedBy

次に、これらの 2 つの列を選択して、その結果を数えたいと思います。これを次のように実装すると思います。

_dataContext.Activities
    .Where(a => a.IsResolved && a.ResolvedBy == userId)
    .Select(a => new { a.ResolvedDate, ***COUNT*** });

ご覧のとおり、Count-Part が欠落しています。

この ResolvedDate で行われたすべてのアクティビティを取得してカウントしたいと考えています。

どうすればそれを実装できますか?

4

4 に答える 4

18
from a in dataContext.Activities
where a.IsResolved && a.ResolvedBy == userId
group a by a.ResolvedDate into g
select new {ResolvedOn=g.Key, NumberResolved= g.Count()}
于 2012-04-06T18:58:29.257 に答える
10

各アイテムを日付でカウントしようとしている場合は、次を使用する必要がありますGroupBy

var countsByDate = _dateContext.Activities
                           .Where(a => a.IsResolved && a.ResolvedBy == userId)
                           .GroupBy(a => a.ResolvedDate)
                           .Select(g => new {ResolvedDate = g.Key, Count = g.Count() });
于 2012-04-06T18:58:41.497 に答える
6

毎日解決されるアクティビティの数を取得するには、ResolvedDate でデータをグループ化する必要があります。

var dates = from a in dataContext.Activities
            where a.IsResolved && a.ResolvedBy == userId
            group a by a.ResolvedDate into g
            select new { Date = g.Key, Count = g.Count() }

日だけ (時間、分などなし) でグループ化するには、group ステートメントを変更できます。

var dates = from a in dataContext.Activities
            where a.IsResolved && a.ResolvedBy == userId
            group a by a.ResolvedDate.Date into g
            select new { Date = g.Key, Count = g.Count() }
于 2012-04-06T18:59:57.060 に答える
3
var dates = dataContext.Activities
    .Where(a => a.IsResolved && a.ResolvedBy == userId)
    .Select(a => a.ResolvedDate)
    .ToList();

var count = dates.Count;

カウントだけを取得したい場合は、カウントのみを選択することで、はるかに高速にすることができます。

var count = dataContext.Activities
    .Count(a => a.IsResolved && a.ResolvedBy == userId);
于 2012-04-06T18:57:16.717 に答える