[英]LINQ GroupBy anonymous type and select timestamp that is within +/- one minute
我有一个答案列表,我通过将FormId,ProductInstance和最后由TimeStamp匹配来进行分组,如下所示:
var groups = answersForCustomerList.GroupBy(x => new { x.FormId, x.ProductInstance, x.TracingData.Timestamp });
这给了我这样的团体:
FormId = {97748e5e-be41-4d53-9ef8-f0dc150e58b6}, ProductInstance = "kontot", Timestamp = {2016-12-20 16:00:00}
FormId = {87dd356b-2770-4427-89d2-7503ee80bb1c}, ProductInstance = "Lån", Timestamp = {2016-12-20 16:02:00}
FormId = {87dd356b-2770-4427-89d2-7503ee80bb1c}, ProductInstance = "Lån", Timestamp = {2016-12-20 16:01:00}
FormId = {97748e5e-be41-4d53-9ef8-f0dc150e58b6}, ProductInstance = "Konto", Timestamp = {2016-12-20 15:00:00}
FormId = {87dd356b-2770-4427-89d2-7503ee80bb1c}, ProductInstance = "Lån", Timestamp = {2016-12-20 15:59:00}
但是我需要做的事情似乎无法弄清楚如何将+/- 1分钟以内的时间戳分组到同一组中。 因此,具有相同FormId和ProductInstance但具有TimeStamp 16:01:00或15:59:00的答案与16:00:00组处于同一组。
我设法得到了我想要的东西:
var groups = answersForCustomer
.GroupBy(x =>
{
var stamp = x.TracingData.Timestamp;
stamp = stamp.AddMinutes(-(stamp.Minute % 2));
stamp = stamp.AddMilliseconds(-stamp.Millisecond - 1000 * stamp.Second);
return new { stamp, x.FormId, x.ProductInstance };
});
这使我可以提前2分钟到达小组,感谢所有答案!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.