2015-05-15 58 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