我试图找到一种使用 LINQ 方法语法按日期(不考虑时间)对记录进行分组的方法,但只选择每条记录的一个实例(即模型中的 ItemId)
我的简单查询如下:
range1.Count(x => ((x.OpenedDate >= todayFirst) && (x.OpenedDate <= todayLast))
我如何计算这个范围内的唯一记录ItemId
?
我试图找到一种使用 LINQ 方法语法按日期(不考虑时间)对记录进行分组的方法,但只选择每条记录的一个实例(即模型中的 ItemId)
我的简单查询如下:
range1.Count(x => ((x.OpenedDate >= todayFirst) && (x.OpenedDate <= todayLast))
我如何计算这个范围内的唯一记录ItemId
?
听起来像你想要的:
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();