2016-05-09 19 views
0

Ich habe versucht:Wie konvertiert `Dictionary <string, Wörterbuch <string, List <myCustomClass >>>` auf `Dictionary <string, List <myCustomClass >>`

endResult = tempResult.Where(x => x.Key.Equals(nameOfMyList)) 
         .SelectMany(wert => wert as List<MyCustomClass>) 
         .Cast<Dictionary<string, List<MyCustomClass>>>().ToDictionary(); //error "can not convert type" 

endResultDictionary<string, List<MyCustomClass>> ist.

tempResult ist Dictionary<string, Dictionary<string, List<MyCustomClass>>>.

Was ist hier falsch?

AKTUALISIERT:

Sorry, ich schrieb endResultDictionary<string, List<MyCustomClass>>und nichtDictionary<string, Dictionary<string, List<MyCustomClass>>> (es aktualisiert)

Eigentlich möchte ich Dictionary<string, List<MyCustomClass>> von Dictionary<string, Dictionary<string, List<MyCustomClass>>>, Art der Umwandlung zu extrahieren,

werfen
+0

Wahrscheinlich nur ein Tippfehler, aber nach Ihrem Thema Ich denke, Ihre "endresult" -Typ sollte Dictionary sein >. –

+0

mein Beitrag – kkkk00999

Antwort

0

Ich glaube, Sie nicht Wörterbücher verstehen. Überprüfen Sie dieses Beispiel:

var foo = new Dictionary<string, Dictionary<string, List<MyCustomClass>>>(); 
... 
// Add some content to foo. 
... 

string nameOfMyList = ""; // Something that exists as a key in foo. 

Dictionary<string, List<MyCustomClass>> result = foo[nameOfMyList]; 
1

Ihr .SelectMany(wert => wert as List<MyCustomClass>) gibt einen Enumerator zurück, der Instanzen von List<MyCustomClass> zurückgibt. Sie versuchen, diese Liste in Dictionary<string, List<MyCustomClass>> zu konvertieren. Das ist nicht möglich, da diese Typen nicht austauschbar sind.

Sie müssen sicherstellen, welchen Conversion-Pfad Sie suchen. Es ist möglich, ein Wörterbuch aus, dies zu schaffen, aber man muss mit einem Schlüssel kommen, sich (was eindeutig sein müssen):

.SelectMany(wert => wert as List<MyCustomClass>) 
.ToDictionary(k => whatEverYourKeyIs 
      , v => v /* this is the list */ 
      ) 
+0

aktualisiert mein Beitrag – kkkk00999

Verwandte Themen