2

我有一张包含约会的桌子。这些约会有不同的状态(字节从 1 到 5)和日期;日期列被简单地称为AppointDate。我传入了一个 ID 列表,我想根据状态以及约会日期是否过去对结果进行分组。

TheIDs是作为参数传入的 long 列表。这是我到目前为止所拥有的:

var TheCounterInDB = (from a in MyDC.Appointments
                      where TheIDs.Contains(a.ID)
                      group a by a.AppointStatus into TheGroups
                      select new { 
                             TheStatus = TheGroups.Key,
                             TheTotalCount = TheGroups.Count(),
                             TheLateCount = ?,
                             ThePendingCount = ?
                      }).ToList();

基本上,我想TheLateCount成为状态为 1 且日期已过的所有约会的计数,以及ThePendingCount状态为 1 且日期未过的所有约会的计数。我的匿名类型很适合返回所有不同状态的计数(这就是状态.Key),但我想知道如何最好地将日期要求添加到分组中。

感谢您的建议。

4

1 回答 1

4
var TheCounterInDB = (from a in MyDC.Appointments
                      where TheIDs.Contains(a.ID)
                      group a by a.AppointStatus into TheGroups
                      select new { 
                             TheStatus = TheGroups.Key,
                             TheTotalCount = TheGroups.Count(),
                             TheLateCount = TheGroups.Count(x => x.AppointStatus == 1 && x.AppointDate < DateTime.Today),
                             ThePendingCount = TheGroups.Count(x => x.AppointStatus == 1 && x.AppointDate >= DateTime.Today)
                      }).ToList();
于 2012-07-20T16:37:23.163 回答