ID不同的Linq Count

时间:2019-03-19 13:04:43

标签: c# linq datetime

我具有以下数据库结构:请忽略在其显示NULL的地方

enter image description here

因此,现在我想使用Linq来计算DateAndTimeDateType.Day字段等于给定值的位置和EventID不同的位置。

示例:

因此,从DateAndTimeID 11到15,这一天是2019年3月22日,而EventID的所有人都是相同的。现在,我想计算一下ID的不同之处。因此,在这种情况下,结果应为1。

此刻,我只是在数数与以下代码所示相同的日期:

@Model.DateAndTimes
    .Where(f => f.DateAndTimeDateType.Value.DayOfYear == renderedDayWithTime.DayOfYear)
    .Count()

2 个答案:

答案 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,并且您要检查仅日期