2015-04-25 53 views
-1

我有一個包含整月數據的數據表。現在我想通過linq按天獲得這些數據組。我已經有這個查詢,但我需要一點點改變。我的一天從7 O時鐘開始&第二天結束7 O時鐘。我當前的查詢是:如何通過LINQ獲取datetime組的日期C#

var query = dt.AsEnumerable() 
    .GroupBy(row => new 
    { 
     day = row.Field<DateTime>("dateandTime"), 
     Code = row.Field<string>("Code"), 
     Name = row.Field<string>("Name") 
    }) 
    .Select(g => new 
    { 
     Name = g.Key.Name, 
     day = g.Key.day, 
     Code = g.Key.Code, 
     quantity = g.Count() 
    } 
     ); 

dateandtime甲是:2014年1月2日05:26:10.567

我如何能夠被整個月份的天得到的數據表組的數據?

我想從7到7的數據。如果月份結束,那麼上次日期數據也應該得到下一個日期的數據高達7 O時鐘。

+2

「dateandtime formate是:2014-01-02 05:26:10.567 「 - 不,不是,它是'DateTime' ... –

+1

'dateandtime'是變量名稱。 –

+0

顯然,這是行中的字段名稱。但如果它真的是'DateTime'字段,那麼它沒有格式 - 每個值只是一個'DateTime'。 –

回答

2

只需將DateTime值的Day屬性組合起來後,相應地將日期/時間調整7小時後即可。當然,如果你確實有多個月/年介入,會給你有些奇怪的結果,但是......

.GroupBy(row => new 
{ 
    Day = row.Field<DateTime>("dateandTime").AddHours(-7).Day, 
    Code = row.Field<string>("Code"), 
    Name = row.Field<string>("Name") 
}) 

(注:你需要確保你的原始查詢找到數據一個月需要考慮7小時的班次,而且如果這7小時的班次實際上是由於時區的緣故,可能會有更好的選擇。)

+0

我說過我的一天從7 O開始,第二天結束7 O時鐘。上面的查詢給出12到12的數據。 –

+1

@bogojane:啊,我錯過了那一點。易於修復 - 編輯。 –

+0

謝謝@Jon Skeet,這正是我想要的。如果我有全年的數據,它也可以按月分組。 –