Wörterbuch zur Liste (C#)
Nicht wirklich ein problem, aber ich bin neugierig, ob es ist ein schöner Weg, dies zu tun. Im Grunde genommen habe ich ein Wörterbuch, wo der Schlüssel ist eine Struktur, die ich erstellt habe. Was ich tun müssen, ist erhalten eine Liste mit einer bestimmten Eigenschaft in die Tasten. I. e. in der Struktur habe ich ein Feld namens "ID", die ich will, um eine Liste der. Was ich jetzt mache, ist dies:
List<long> keys = new List<long>();
foreach(var key in dict.Keys)
{
keys.Add(key.ID);
}
Funktioniert es, aber ich Frage mich nur, wenn ich bin fehlt sogar noch einfacher - ich dachte zuerst, dass vielleicht der ToList-Methode könnte erwogen werden, einen parameter, so kann ich angeben, welcher Teil der Struktur, die ich will in die Liste, aber es scheint nicht ich kann.
Wie würde Euch verbessern?
- haben Sie versucht, die LINQ .ToList () - Methode?
- Sorry, ich habe übersehen, dass. Einige gute Antworten, aber! ^^
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mit LINQ:
Hier übergeben Sie die ID
Select()
eher alsToList()
, und nur callToList()
zum umwandeln des resultierenden Sammlung auf eine Liste.Mit
Select
(Von Linq) für die Projektion undToArray
zu erstellen, die eine konkrete Liste. (OderToList
wenn Sie ändern müssen, gehen die entstandenen Inkasso-später)ToArray()
schafft einelong[]
array anstatt einList<long>
.List<T>
haben einen geringen overhead im Vergleich zuT[]
und wenn es keinen Grund gibt, um die Funktionalität verwenden, es scheint übertrieben zu mir zum erstellen einer Instanz für nichts (Als backing-store ist einT[]
intern sowieso).Mithilfe Von Linq:
Verwenden Sie einen der Konstruktoren der
List
(der Konstruktor einen
IEnumerable<T>
, und dieSelect
aufdict.Keys
klar ist es)und mit
AddRange
Im Allgemeinen sind wir mit der
.Select
"von" Linq um das problem zu lösen. Klar könnten wir geschrieben haben:statt
Ich werde beachten Sie der einzige interessante Unterschied ist für die
AddRange
: die anderen "Wege" erstellen Sie eine neueList
und füllen Sie es.AddRange
fügt eine bereits vorhandenenList
könnte bereits Elemente.verwenden Sie linq, um die Rückkehr der ids als Liste: