wie ändern Sie den Wert des Wörterbuches mit linq basiert auf Schlüssel?
Ich habe ein Wörterbuch, das ist der Typ,
Dictionary<string, string> newdictionary = new Dictionary<string, string>();
newdictionary.Add("12345", "chip1");
newdictionary.Add("23456", "chip2");
Nun habe ich eine Liste, die den Typ
internal class CustomSerial
{
public string SerialNo { get; set; }
public decimal ecoID { get; set; }
}
var customList = new List<CustomSerial>();
CustomSerial custObj1= new CustomSerial();
custObj1.ecoID =1;
custObj1.SerialNo = "12345";
customList.Add(custObj1);
CustomSerial custObj2 = new CustomSerial();
custObj2.ecoID = 2;
custObj2.SerialNo = "23456";
customList.Add(custObj2);
Nun muss ich das update das Erste Wörterbuch Filtern Sie die Tasten mit ther SerialNumber und Ersetzen Sie die Werte mit den ecoID.
Wenn ich es versuchen, es gibt
foreach (KeyValuePair<string, string> each in newdictionary)
{
each.Value = customList.Where(t => t.SerialNo == each.Key).Select(t => t.ecoID).ToString();
}
System.Sammlungen.Generisches.KeyValuePair.Wert kann nicht zugewiesen werden -- Sie sind schreibgeschützt
Was ist
ja newdictionary
foreach wird verwendet, um ermittelt werden die Daten aus der Erfassung wissen Sie das ?
ja, ich weiß, aber versucht zu ersetzen, die nach Erlangung Schlüssel zu Kraft zu arbeiten, omiting, gibt es eine Möglichkeit zu überprüfen, für die Schlüssel und Werte zu aktualisieren?
Ihre
serials
? Abgesehen davon, dass LIN(Q)
ist ein tool zur Abfrage nicht aktualisieren.ja newdictionary
foreach wird verwendet, um ermittelt werden die Daten aus der Erfassung wissen Sie das ?
ja, ich weiß, aber versucht zu ersetzen, die nach Erlangung Schlüssel zu Kraft zu arbeiten, omiting, gibt es eine Möglichkeit zu überprüfen, für die Schlüssel und Werte zu aktualisieren?
Ihre
ToString()
auf Ihre Letzte Zeile des Codes ist unwahrscheinlich, dass zu tun, was Sie wollen.
InformationsquelleAutor Sajeetharan | 2014-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
LIN(Q)
ist ein tool zur Abfrage etwas nicht, Sie zu aktualisieren.Sie können jedoch die erste query, was Sie brauchen, zu aktualisieren. Zum Beispiel:
Durch die Art und Weise, erhalten Sie das "KeyValuePair.Wert "zugeordnet werden kann-es ist nur-Lesen" - Ausnahme aus, da eine
KeyValuePair<TKey, TValue>
ist einstruct
die nicht bearbeitet werden können.es ist ein
IEnumerable<KeyValuePair<string, string>>
.Danke! markieren Sie als Antwort nach dem Test 🙂
Stattdessen aktualisiert es das hinzufügen eines neuen Schlüssel-Wert -
Nein, ich bin zuerst nur die key-Werte, die bereits im Wörterbuch:
...Where(c => newdictionary.ContainsKey(c.SerialNo))
InformationsquelleAutor Rango
Hätten Sie die einfachste, in dieser form: aber ich verstehe nicht, warum du bei der Zuweisung den gleichen Wert, aber die Methode gilt unabhängig davon,
InformationsquelleAutor Tsepo Mohlapo