0

LINQ メソッド構文を使用して (時間を考慮せずに) 日付でレコードをグループ化する方法を見つけようとしていますが、各レコードのインスタンスを 1 つだけ選択します (これはモデル内の ItemId です)。

私の簡単なクエリは次のとおりです。

range1.Count(x => ((x.OpenedDate >= todayFirst) && (x.OpenedDate <= todayLast))

この範囲内の一意のレコードを でカウントするにはどうすればよいItemIdですか?

4

1 に答える 1

4

あなたが望むように聞こえます:

var query = range1.Where(x.OpenedDate >= todayFirst && x.OpenedDate <= todayLast)
                  .GroupBy(x => x.ItemId)
                  .Select(g => new { ItemId = g.Key, Count = g.Count() });

foreach (var result in query)
{
    Console.WriteLine("{0} - {1}", result.ItemId, result.Count);
}

私はあなたのことをよく理解していない可能性があります - あなたが本当に日付またはアイテム ID でグループ化したいのかはっきりしていません

編集:その範囲内の個別のアイテム ID の数だけが必要な場合は、次を使用できます。

var count = range1.Where(x.OpenedDate >= todayFirst && x.OpenedDate <= todayLast)
                  .Select(x => x.ItemId)
                  .Distinct()
                  .Count();
于 2012-09-20T11:45:38.060 に答える