Tengo una propiedad en una clase que es un ISet. Estoy tratando de obtener los resultados de una consulta linq en esa propiedad, pero no puedo encontrar la manera de hacerlo.Cómo convertir resultados de linq a HashSet o HashedSet
Básicamente, en busca de la última parte de este:
ISet<T> foo = new HashedSet<T>();
foo = (from x in bar.Items select x).SOMETHING;
También se podría hacer esto:
HashSet<T> foo = new HashSet<T>();
foo = (from x in bar.Items select x).SOMETHING;
Editar: Esto es lo que terminé haciendo:
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());
}
Buen punto en tipos anónimos. Sin embargo, ¿los tipos anónimos tienen invalidaciones útiles de 'GetHashCode' y' Equals'? Si no, no van a ser muy buenos en un HashSet ... –
@Joel: Sí, lo hacen. De lo contrario, todo tipo de cosas fallarían. Es cierto que solo usan las comparaciones de igualdad predeterminadas para los tipos de componentes, pero eso suele ser suficiente. –
Es bueno saberlo. En ese caso, sí, el método de extensión sería más útil en general que usar el constructor directamente. –