0

我试图找到一种使用 LINQ 方法语法按日期(不考虑时间)对记录进行分组的方法,但只选择每条记录的一个实例(即模型中的 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 回答