Frage

Ich habe dies im Netz sah aber ich dies fragen, um sicherzustellen, dass ich auf etwas nicht verpasst haben. Gibt es eine eingebaute Funktion HashSets auf Listen in C # zu konvertieren? Ich brauche Duplizität der Elemente zu vermeiden, aber ich brauche eine Liste zurückzukehren.

War es hilfreich?

Lösung

Hier ist, wie ich es tun würde:

   using System.Linq;
   HashSet<int> hset = new HashSet<int>();
   hset.Add(10);
   List<int> hList= hset.ToList();

HashSet ist per Definition enthält keine Duplikate. So gibt es keine Notwendigkeit für Distinct.

Andere Tipps

Zwei gleichwertige Optionen:

HashSet<string> stringSet = new HashSet<string> { "a", "b", "c" };
// LINQ's ToList extension method
List<string> stringList1 = stringSet.ToList();
// Or just a constructor
List<string> stringList2 = new List<string>(stringSet);

Persönlich würde ich lieber telefonieren ToList ist es bedeutet, dass Sie nicht den Typ der Liste neu formulieren müssen.

Im Gegensatz zu meinen früheren Gedanken, lassen beide Möglichkeiten Kovarianz leicht in C # 4 ausgedrückt werden:

    HashSet<Banana> bananas = new HashSet<Banana>();        
    List<Fruit> fruit1 = bananas.ToList<Fruit>();
    List<Fruit> fruit2 = new List<Fruit>(bananas);

Es ist die Linq-Erweiterungsmethode ToList<T>(), die das tut (es auf IEnumerable<T> definiert ist, die durch HashSet<T> implementiert ist).

So stellen Sie sicher, dass Sie using System.Linq;

Wie Sie offensichtlich bewusst die HashSet sind, werden sicherstellen, dass Sie keine Duplikate haben, und diese Funktion ermöglicht es Ihnen, es als IList<T> zurückzukehren.

List<ListItemType> = new List<ListItemType>(hashSetCollection);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top