我具有以下数据库结构:请忽略在其显示NULL的地方
因此,现在我想使用Linq来计算DateAndTimeDateType.Day
字段等于给定值的位置和EventID
不同的位置。
示例:
因此,从DateAndTimeID
11到15,这一天是2019年3月22日,而EventID
的所有人都是相同的。现在,我想计算一下ID的不同之处。因此,在这种情况下,结果应为1。
此刻,我只是在数数与以下代码所示相同的日期:
@Model.DateAndTimes
.Where(f => f.DateAndTimeDateType.Value.DayOfYear == renderedDayWithTime.DayOfYear)
.Count()
答案 0 :(得分:3)
过滤日期之后,可以投影EventID
,然后使用.Distinct
:
var count = @Model.DateAndTimes
.Where(f => f.DateAndTimeDateType.Value.DayOfYear == renderedDayWithTime.DayOfYear)
.Select(f => f.EventID)
.Distinct()
.Count();
请注意,如果确实要对所有{/ {1}}值范围执行此操作,则方法是首先DayOfYear
,然后为每个组分配不同的计数
此外,如果确实有一年以上的约会,则可能要使用GroupBy
而不是.Date
。这将为您提供没有时间的日期。
答案 1 :(得分:2)
您可以使用类似的
var givenDateTime = DateTime.Now; //Your date and time
var count = @Model.DateAndTimes
.Where(f => f.DateAndTimeDateType.Value.Date == givenDateTime.Date)
.Select(x => x.EventId)
.Distinct()
.Count();
在这里,我们认为您的f.DateAndTimeDateType.Value
类型为DateTime
,并且您要检查仅日期。