C# - Linq oder Lambda zu bekommen Dictionary<string, List<string>> aus einer Klasse

Ich kann nicht scheinen, um herauszufinden, die Antwort, die ich Suche. Ich hoffe, jemand hier kann helfen.

Habe ich eine Klasse, die enthält Setup-Informationen für einige Prozesse. Jede Klasse hat eine Prozess-id, Task-id, und verschiedene andere Stücke von Informationen, die nicht benötigt werden für meine aktuelle Logik.

public class ProcessSetting
{
    public int ProcessId { get; set; }
    public int TaskId { get; set; }

    //Other properties not needed
}

Gibt es mehrere ProcessSettings, die vorhanden sein können. Ich bin das ziehen der Daten in eine Liste. Es ist möglich, eine Prozess-id im Zusammenhang mit mehreren TaskIds. Zum Beispiel:

ProcessId: 1, TaskId: 1
ProcessId: 1, TaskId: 1
ProcessId: 1, TaskId: 2
ProcessId: 1, TaskId: 3
ProcessId: 2, TaskId: 3
ProcessId: 2, TaskId: 4
ProcessId: 3, TaskId: 1

Bin ich zunächst mithilfe von linq einfach sammeln Sie die Werte, die ich brauche, aus dem vorhandenen enum: (unter Verwendung von distinct auf das Ende zu vermeiden, ziehen in der mehrere Datensätze festlegen der Prozess-id 1 und TaskId 1)

var baseSettings = (from setting in processSettings
                    select new
                              {
                                  ProcessStr = ((ProcessEnum)setting.ProcessId).ToString(),
                                  TaskStr = ((TaskEnum)setting.TaskId).ToString()
                              }).Distinct();

Dieses nun gibt mir eine Liste mit nur die processId und taskId. Ich fand einige Logik hier, die führen mich in die richtige Richtung, aber nicht genau das, was ich brauche. Hier ist, was das war:

Dictionary<string, List<string> = baseSettings.GroupBy(x => x.ProcessStr).ToDictionary(x => x.Key, x => x.ToList());

Dies ist jedoch falsch. Ich erhalte eine Fehlermeldung:

"Kann nicht konvertiert werden Quelltyp
System.Collections.Generic.Dictionary<string,System.Generic.List{ProcessStr:string,
TaskStr:string}>>
Zieltyp
System.Collections.Generic.Dictionary<string,System.Collections.Generic.List<string>>

Ich glaube nicht, dass ein Schlüssel mit dem Wert {ProcessStr, TaskStr}. Kann jemand mich in die richtige Richtung?

  • Sorry, kann nicht verstehen, was die Daten, die Sie benötigen in Ihrem Wörterbuch
InformationsquelleAutor Tom | 2013-09-05
Schreibe einen Kommentar