Ich habe eine Eigenschaft auf einer Klasse, die ein ISet ist. Ich versuche, die Ergebnisse einer linq-Abfrage in diese Eigenschaft zu bekommen, kann aber nicht herausfinden, wie das geht.Wie Linq Ergebnisse in HashSet oder HashedSet konvertieren
Grundsätzlich sucht für den letzten Teil dieses:
ISet<T> foo = new HashedSet<T>();
foo = (from x in bar.Items select x).SOMETHING;
Könnte auch dies tun:
HashSet<T> foo = new HashSet<T>();
foo = (from x in bar.Items select x).SOMETHING;
Edit: Das ist, was ich tun endete:
public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source)
{
return new HashSet<T>(source);
}
public static HashedSet<T> ToHashedSet<T>(this IEnumerable<T> source)
{
return new HashedSet<T>(source.ToHashSet());
}
Guter Punkt bei anonymen Typen. Haben anonyme Typen jedoch nützliche Überschreibungen von 'GetHashCode' und' Equals'? Wenn nicht, werden sie in einem HashSet nicht gut sein ... –
@Joel: Ja, das tun sie. Sonst würden alle möglichen Dinge scheitern. Zugegeben, sie verwenden nur die Standard-Gleichheitsvergleiche für die Komponententypen, aber das ist normalerweise gut genug. –
Gut zu wissen. In diesem Fall wäre die Erweiterungsmethode im Allgemeinen nützlicher als die direkte Verwendung des Konstruktors. –