2015-05-15 38 views
0

如何通过声明LINQ如何通过声明只获取组日期的LINQ to SQL

var res = query.GroupBy( b => b.CreatedDate.ToString()).Select(c => new 
       { 
        ShredQueueCount = c.Sum(w => w.ShredQueueCount), 
        ShredCompletedCount = c.Sum(w => w.ShredCompletedCount), 
        ShredValFailureCount = c.Sum(w => w.ShredValFailureCount), 
        ShredExceptionCount = c.Sum(w => w.ShredExceptionCount), 
        CreatedDate = c.Select(w => w.CreatedDate) 
       }); 

回答

0

如果它是将LINQ用于在SQL到SQL LINQ表达式得到的只有在小组日期服务器端则需要EntityFunctions.TruncateTime,如:

query.GroupBy(b => EntityFunctions.TruncateTime(b.CreatedDate.Date)) 

否则对LINQ到对象,你可以使用:

query.GroupBy(b => b.CreatedDate.Date) 

如果你的领域是Nullable<DateTime>类型,那么你可以这样做:

query.GroupBy(b => b.CreatedDate.DefaultIfEmpty().Date) 

这将忽略DateTime领域Time部分。

+0

我想只在日期获得群组。 –

+0

@nimishjain,你的意思是按日期,而不是时间? – Habib

+0

@nimishjain,我修改了你的答案,需要:'query.GroupBy(b => b.CreatedDate.Date)', – Habib