使用实体函数删除日期时间的第二部分

时间:2015-09-03 20:23:07

标签: c# linq

我想在日期时间的日期,小时和分钟部分(我不需要第二个)进行分组,我该如何实现。因为我使用LINQ进行实体查询,似乎我应该使用实体函数,但它没有适当的方法,为了澄清我的需要,请考虑这个:

var query = myList
    .GroupBy(s => new {s.date_time,Product_Id})
    .Select(g => new {date = g.Key.date_time, PID = g.Key.Product_Id, Count = g.Count()})
    .ToList();

我需要类似的东西:

s.date_time.AddSeconds(-s.date_time.Second) 

代替

s.date_time

但很明显它会遇到异常,所以我需要使用实体函数,但它有addSeconds方法,但没有第二种方法。

顺便说一句,我使用.net4

2 个答案:

答案 0 :(得分:1)

如果可以直接在EF中使用,那么可能必须使用为各种功能构建的扩展类来完成它,包括那些与日期和时间有关的功能:Entity Functions

在你的小组中可能是这样的。

.GroupBy(s => new {
     EntityFunctions.CreateDateTime(s.date_time.Year, s.date_time.Month, s.date_time.Day, s.date_time.Hour, s.date_time.Minute, 0)
     ,Product_Id})

答案 1 :(得分:0)

你可以尝试:

.GroupBy(s => new {s.date_time.Year,s.date_time.Month...,s.date_time.Minute,Product_Id})