【发布时间】:2014-12-22 23:56:44
【问题描述】:
我有许多需要返回使用.GroupBy 的数据列表的实例。除了日期和整数之外,我还需要返回布尔值,这似乎是我做不到的。示例模型:
public class HolidayCheckList
{
public DateTime startDate { get; set; }
public DateTime endDate { get; set; }
public int stafferId { get; set; }
public bool startTime { get; set; }
public bool endTime { get; set; }
}
下面是目前的控制器:
var model = _db.AnnualLeaves
.Where(r => r.StartDate <= tTE && r.EndDate >= tTS)
.GroupBy(r => r.tBooked)
.Select(m => new HolidayCheckList
{
startDate = m.Max(r => r.StartDate),
endDate = m.Max(r => r.EndDate),
stafferId = m.Min(r => r.StafferId)
});
return View(model.ToList());
这可以满足我的需要。但是,除了startDate 和endDate,我还需要将布尔值startTime 和endTime 返回到视图。我不知道我是否需要一个我不知道的聚合运算符,是否需要包含在.GroupBy 语句中,或者可能需要一个嵌套查询。毫无疑问,它会简单得多。
我确实考虑将数据类型更改为整数,但想知道是否有办法“正确”地做到这一点。
顺便说一句,是否有关于 lambda 查询的学习资源或文档?我可以找到基本信息,但没有详细说明 .GroupBy 的工作原理或聚合运算符是什么。
【问题讨论】:
-
答案(是否要使用聚合或在
GroupBylambda 中包含属性)取决于这些属性中的不同值是否意味着不同的组。也就是说,如果两个HolidayChecklist除了startTime和endTime之外都是一样的,应该归为一组吗? -
数据写入表的位置我可以确保任何组的 startTime 和 endTime 值都相同,尽管我更喜欢使用 Min / Max 等聚合。
标签: c# asp.net-mvc lambda boolean linq-group