2016-04-14 11 views
4

Ich habe eine Liste, die anonymer Typ ist und ich habe tagId, isTagSelected & tagName drin. Was ich will, ist wollen vierte Eigenschaft hinzufügen, basierend auf einer BedingungWie Wert in anonymer Liste in c aktualisieren #

Code:

var tagDetails = tagIdList.Select((x, i) => new { tagId = x, isTagSelected = tagSelectionList[i], tagName = tagList[i] }).ToList(); 

Ergebnis:

{tagId = 1, isTagSelected = true, tagName = "a"} 
{tagId = 2, isTagSelected = false, tagName = "b"} 
{tagId = 3, isTagSelected = true, tagName = "c"} 

Was ich will, ist, wenn tagName ist a fügen Sie dann Size = "S" sonst string.empty oder null. Wie kann ich das erreichen? Ich versuchte folgenden Ansatz, der ist, fügen Sie Größe in allen von ihnen und dann von unerwünschten Ort entfernen, aber es funktioniert nicht.

Code:

var tagDetails = tagIdList.Select((x, i) => new { tagId = x, isTagSelected = tagSelectionList[i], tagName = tagList[i], itemSize = itemSize }).ToList(); 

Ergebnis:

{tagId = 1, isTagSelected = true, tagName = "a", Size = "S"} 
{tagId = 2, isTagSelected = false, tagName = "b", Size = "S"} 
{tagId = 3, isTagSelected = true, tagName = "c", Size = "S"} 

Ich versuchte foreach Schleife, aber ich kann nur Eigenschaft lesen ändern. Gibt es trotzdem, dass ich Size von "b" & "c" entfernen kann?

Erwartetes Ergebnis:

{tagId = 1, isTagSelected = true, tagName = "a", Size = "S"} 
{tagId = 2, isTagSelected = false, tagName = "b", Size = "" or null} 
{tagId = 3, isTagSelected = true, tagName = "c", Size = "" or null} 
+2

Alle Eigenschaften anonymer Typen sind schreibgeschützt. Sie müssen einen Weg finden, die Instanzen mit dem bereits korrekten Wert zu erzeugen. Dies kann eine zweite Abfrage bedeuten, bei der Sie eine neue Gruppe von Werten erstellen. –

Antwort

6

Im nicht bei einer VS-Instanz aber es scheint, wie dies funktionieren würde.

var tagDetails = tagIdList.Select((x, i) => new 
     { tagId = x, 
      isTagSelected = tagSelectionList[i], 
      tagName = tagList[i], 
      Size = tagList[i] == "a" ? "S" : null 
    }).ToList(); 
+0

Das, was ich gesucht habe. Vielen Dank – CSharper