【发布时间】:2012-07-19 23:19:07
【问题描述】:
我有一张包含约会的表格。这些约会有不同的状态(字节从 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 所在的位置),但我想知道如何最好地将日期要求添加到分组中。
感谢您的建议。
【问题讨论】:
-
嗯,你用的是什么数据库?在您的数据库中简单地创建两个视图可能会更容易,一个计算延迟约会,一个计算未决约会。这样,您可以简单地调用视图(假设您使用的是支持此功能的数据库)并访问它们返回的一行。
-
@Adam:你还需要什么?我想这一切都在那里。
标签: c# linq-to-sql