So gruppieren Sie nach Zeitbereich (geschlossene Zeiten gruppiert)C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 So gruppieren Sie nach Zeitbereich (geschlossene Zeiten gruppiert)

Post by Anonymous »

Angenommen, wir haben diese Datensätze:

Code: Select all

NID    CId    PushedAt
120    796    2015-09-04 18:00:53.6012627 +00:00
120    967    2015-09-04 18:00:51.9891748 +00:00
119    669    2015-09-04 17:45:56.8179094 +00:00
119    955    2015-09-04 17:45:55.2078154 +00:00
119    100    2015-09-04 17:45:53.5867187 +00:00
116    384    2015-09-04 17:01:01.5375630 +00:00
116    155    2015-09-04 17:00:59.9284665 +00:00
116    517    2015-09-04 17:00:58.3193725 +00:00
113    109    2015-09-04 16:00:53.5269438 +00:00
113    111    2015-09-04 16:00:51.9168442 +00:00
107    603    2015-09-04 13:45:59.9994496 +00:00
Ich möchte sie nach Zeitbereich (nicht nach einer bestimmten Zeit) gruppieren. Wenn ich sie nach Zeit gruppiere:

Code: Select all

var grouped = list.GroupBy(t => new {
t.PushedAt.Year,
t.PushedAt.Month,
t.PushedAt.Day,
t.PushedAt.Hour,
t.PushedAt.Minute
});
dann übersehe ich Gruppen, die unterschiedliche Minuten haben, aber tatsächlich in derselben Gruppe sind. Zum Beispiel diese Zeilen:

Code: Select all

116    384    2015-09-04 17:01:01.5375630 +00:00
116    155    2015-09-04 17:00:59.9284665 +00:00
116    517    2015-09-04 17:00:58.3193725 +00:00
wird zu diesen Gruppen weitergeleitet:

Code: Select all

// group 1:
116    384    2015-09-04 17:01:01.5375630 +00:00
// group 2:
116    155    2015-09-04 17:00:59.9284665 +00:00
116    517    2015-09-04 17:00:58.3193725 +00:00
Aber was ich suche, ist diese Gruppe:

Code: Select all

// group 1:
116    384    2015-09-04 17:01:01.5375630 +00:00
116    155    2015-09-04 17:00:59.9284665 +00:00
116    517    2015-09-04 17:00:58.3193725 +00:00
Bedeutet, dass diese drei Zeilen gruppiert werden sollten. Angenommen, alle Zeilen, die in einem 5-Minuten-Bereich liegen, sollten gruppiert werden. Eine vollständige Ausgabe würde etwa so aussehen:

Code: Select all

// group 1:
120    796    2015-09-04 18:00:53.6012627 +00:00
120    967    2015-09-04 18:00:51.9891748 +00:00
// group 2:
119    669    2015-09-04 17:45:56.8179094 +00:00
119    955    2015-09-04 17:45:55.2078154 +00:00
119    100    2015-09-04 17:45:53.5867187 +00:00
// group 3:
116    384    2015-09-04 17:01:01.5375630 +00:00
116    155    2015-09-04 17:00:59.9284665 +00:00
116    517    2015-09-04 17:00:58.3193725 +00:00
// group 4:
113    109    2015-09-04 16:00:53.5269438 +00:00
113    111    2015-09-04 16:00:51.9168442 +00:00
// group 5:
107    603    2015-09-04 13:45:59.9994496 +00:00
Haben Sie eine Idee?
Hinweis: Das NID-Feld ist NICHT gruppierbar.
UPDATE:
Ich weiß, dass ich das Problem durch Iterieren von Elementen lösen kann (wie juharr im Kommentar sagte). Aber ich suche nach einer LINQ-Lösung, falls es welche gibt. Danke.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post