gpt4 book ai didi

c# - 具有 boolean 值的 Lambda 查询 GroupBy

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:14 31 4
gpt4 key购买 nike

在许多情况下,我需要返回使用 .GroupBy 的数据列表。除了日期和整数之外,我还需要返回 boolean 值,但我似乎做不到。示例模型:

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; }
}

下面是目前的 Controller :

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());

这就是我需要的。但是,除了 startDateendDate 之外,我还需要返回 startTimeendTime,它们是 boolean 值, 到 View 。我不知道我是否需要一个我不知道的聚合运算符,是否需要包含在 .GroupBy 语句中,或者可能需要一个嵌套查询。毫无疑问,它会简单得多。

我确实考虑过将数据类型更改为整数,但想知道是否有一种“正确”执行此操作的方法。

顺便说一句,是否有 lambda 查询的学习资源或文档?我可以找到基本信息,但没有详细说明 .GroupBy 的工作原理或聚合运算符是什么。

最佳答案

如果您确定所有 startTimeendTime 值都相同(或者您不关心),您可以使用 。 First 选择组的 startTimeendTime 值中的第一项:

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),
startTime = m.Select(r => r.StartTime).First(),
endTime = m.Select(r => r.EndTime).First()
});

lambda 的一个很好的资源是 Lambda Expressions MSDN 上的文章。

Aggregation Operations看起来像是对 LINQ 中可用的各种聚合操作的一个很好的概述。不幸的是,这些示例是在 VB.NET 中。

关于c# - 具有 boolean 值的 Lambda 查询 GroupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593764/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com