2017-01-23 1 views
-5

Ich habe eine Funktion SQL-Abfragen auszuführen, die mich zurückGruppendaten in einer Liste <Dictionary <string, string >>

List<Dictionary<string, string>> 

Das erste Element ist das Feld, und der zweite ist der Wert.

In einem speziellen Fall ist diese Liste hat die folgenden Werte:

{ datetime, '01/23/2017 01:10:30' } 
{ datetime, '01/23/2017 10:00:00' } 
{ datetime, '01/23/2017 11:23:15' } 
{ datetime, '01/20/2017 07:13:20' } 
{ datetime, '01/20/2017 08:20:11' } 
{ datetime, '01/21/2017 07:28:29' } 

Ich muss das konvertieren:

{ '01/23/2017', { '01/23/2017 01:10:30', ''01/23/2017 10:00:00', '01/23/2017 11:23:15' } } 
{ '01/20/2017', { '01/20/2017 07:13:20', '01/20/2017 08:20:11' } } 
{ '01/21/2017', { '01/21/2017 07:28:29' } } 

Wie gehe ich vor?

+0

die 'datetime' ist nicht relevant, richtig? – Tatranskymedved

+0

Korrekt, es ist nur der Name des von der Abfrage zurückgegebenen Feldes. – msmosso

+0

Die Antwort von Ihrer Datenbank scheint seltsam ... Warum eine Liste von Wörterbüchern? – pimbrouwers

Antwort

3

Basierend auf den Daten, die Sie zur Verfügung gestellt haben, hier ist eine Möglichkeit, dies zu tun. Bitte beachten Sie, dass dieser Code geschrieben und in LinqPad ausgeführt, so .Dump() funktioniert nur dort:

var source = new List<KeyValuePair<string, string>> { 
    new KeyValuePair<string, string>("datetime", "01/23/2017 01:10:30") , 
    new KeyValuePair<string, string>("datetime", "01/23/2017 10:00:00"), 
    new KeyValuePair<string, string>("datetime", "01/23/2017 11:23:15"), 
    new KeyValuePair<string, string>("datetime", "01/20/2017 07:13:20"), 
    new KeyValuePair<string, string>("datetime", "01/20/2017 08:20:11"), 
    new KeyValuePair<string, string>("datetime", "01/21/2017 07:28:29") 
}; 

var list = source.Select (s => s.Value) 
    .GroupBy (s => DateTime.ParseExact(s, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture).Date) 
    .ToList(); 

list.Dump(); 

Ausgang:

enter image description here

Verwandte Themen