Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有布尔值的Lambda查询GroupBy_C#_Asp.net Mvc_Lambda_Boolean_Linq Group - Fatal编程技术网

C# 具有布尔值的Lambda查询GroupBy

C# 具有布尔值的Lambda查询GroupBy,c#,asp.net-mvc,lambda,boolean,linq-group,C#,Asp.net Mvc,Lambda,Boolean,Linq Group,我有许多实例需要返回使用.GroupBy的数据列表。除了日期和整数之外,我还需要返回布尔值,这似乎是我做不到的。一个示例模型: public class HolidayCheckList { public DateTime startDate { get; set; } public DateTime endDate { get; set; } public int stafferId { get; set; } public bool startTime { g

我有许多实例需要返回使用
.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());
var模型=\u db.AnnualLeaves
.其中(r=>r.StartDate=tTS)
.GroupBy(r=>r.tBooked)
.选择(m=>new Holiday Checklist
{
startDate=m.Max(r=>r.startDate),
endDate=m.Max(r=>r.endDate),
stafferId=m.Min(r=>r.stafferId)
});
返回视图(model.ToList());
这正是我需要的。但是,除了
startDate
endDate
之外,我还需要将
startTime
endTime
这两个布尔值返回到视图中。我不知道我是否需要一个我不知道的聚合运算符,是否需要包含在
.GroupBy
语句中,或者是否需要一个嵌套查询。毫无疑问,事情会简单得多

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


另外,是否有lambda查询的学习资源或文档?我可以找到基本信息,但没有详细说明
.GroupBy
如何工作,或者聚合运算符是什么

如果您确定所有
startTime
endTime
值都相同(或者您不在乎),您可以使用
.First
选择组的
startTime
endTime
值中的第一项:

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()
    });
var模型=\u db.AnnualLeaves
.其中(r=>r.StartDate=tTS)
.GroupBy(r=>r.tBooked)
.选择(m=>new Holiday Checklist
{
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()
});
关于MSDN的文章是lambdas的一个很好的资源


看起来很好地概述了LINQ中可用的各种聚合操作。不幸的是,这些示例都在VB.NET中。

答案(关于是要使用聚合还是要在
GroupBy
lambda中包含属性)取决于这些属性中的不同值是否表示不同的组。换句话说,如果两个
假日检查表
除了
开始时间
结束时间
之外是相同的,它们是否应该分组在一起?如果数据写入表中,我可以确保任何组的开始时间和结束时间值相同,虽然我更喜欢使用一个聚合,如Min/Max。它看起来像票据。。。我一到家就会测试它-我尝试使用了.First和.Last,但放错了位置,即上面代码中的.Select。对我来说,它应该适用于开始时间。第一时间和结束时间。最后。我是如此接近!谢谢。使用上面的方法,我得到了以下结果,用FirstOrDefault替换螺母修复了它+$异常{方法“第一”只能用作最终的查询操作。请考虑在该实例中使用方法“FrestRealDebug”。哦,还有链接。