Próbuję umieścić wartości w słowniku zależnie od klucza ... Na przykład, jeśli na liście kluczy w indeksie 0 znajduje się litera "a". Chcę dodać wartość val z indeksem 0 do listy wewnątrz słownika za pomocą klawisza "a" (słownik (klucz to "a" w indeksie 0, val w indeksie 0) ... słownik (klucz to "b" w indeks 2, val w indeksie 2))Dodawanie pozycji do listy w słowniku
Czekam wyjście takiego:
w listview LV1: 1,2,4 w listview LV2: 3,5
co ja otrzymuję jest 3,4,5 zarówno listviews
List<string> key = new List<string>();
List<long> val = new List<long>();
List<long> tempList = new List<long>();
Dictionary<string, List<long>> testList = new Dictionary<string, List<long>>();
key.Add("a");
key.Add("a");
key.Add("b");
key.Add("a");
key.Add("b");
val.Add(1);
val.Add(2);
val.Add(3);
val.Add(4);
val.Add(5);
for (int index = 0; index < 5; index++)
{
if (testList.ContainsKey(key[index]))
{
testList[key[index]].Add(val[index]);
}
else
{
tempList.Clear();
tempList.Add(val[index]);
testList.Add(key[index], tempList);
}
}
lv1.ItemsSource = testList["a"];
lv2.ItemsSource = testList["b"];
Rozwiązanie:
zastąpić moduł kodu innego z:
testList.Add (element [indeks], nową listę {Val [indeks]});
thx wszystkim za pomoc =)
im dodanie klucza tylko wtedy, gdy nie istnieje ... if (testList.ContainsKey (klawisz [indeks])) .... – user2093348
Czyścisz 'tempList', gdy dojdziesz do klawisza [3], ponieważ" b "nie znajduje się jeszcze w liście testowej.W efekcie otrzymasz 'tempList' zawierający {3,4,5}; wartość dla obu elementów w słowniku jest odniesieniem do tego samego obiektu. – sigil