2008-10-03 12 views
19

Mam listę obiektów, z których każda zawiera identyfikator, kod i opis.Jak mogę przekonwertować listę <object> na Hashtable w C#?

muszę konwertować do tej listy w Hashtable, używając Opis jako klucz i Id jako wartość.

To jest tak, że Hashtable można następnie serializować do JSON.

Czy istnieje sposób konwersji z listy <obiektu> na Hashtable bez pisania pętli, aby przejść przez każdy element na liście?

Odpowiedz

32

Załóżmy, że twoja lista zawiera obiekty typu Foo (z int i Id opis).

Można używać LINQ, aby włączyć tę listę do słownika tak:

var dict = myList.Cast<Foo>().ToDictionary(o => o.Description, o => o.Id); 
+1

Ten przykład jest na miejscu. Linq wciąż rozwiązuje problemy w lewo, w prawo i centrum. –

+0

Świetne rzeczy! Jest to prawie identyczne z tym, co właśnie napisałem, używając przykładów z linku Franka. Dziękuję bardzo za pomoc :) –

5

Jeśli masz dostęp do Linq, możesz użyć funkcji ToDictionary.

+0

Awesome! Właśnie tego szukałem. Dzięki :) –

1

theList.ForEach (delegat (theObject obj) {dic.Add (obj.Id, obj.Description);});

+0

Wersja równoległa jest bardzo niebezpieczna; zakładasz, że słownik będzie bezpieczny dla wątków, który jest udokumentowany jako * nie * bycie. Teraz, jeśli istniała wersja ToDictionary PFX, to może być inaczej - ale .Add (...) - ryzykowne ;-p –

+1

Jak bardzo prawdziwe! :) Usunąłem tę implementację z mojego wpisu. – noocyte

+0

Bardzo dobra odpowiedź. To jest świadectwo. http://diditwith.net/2006/10/05/PerformanceOfForeachVsListForEach.aspx – anonymous

0

Zobacz także System.Collections.ObjectModel.KeyedCollection < TKey, TItem>. Wygląda na to, że lepiej pasuje do tego, co chcesz robić.

Powiązane problemy