Comment écrire des méthodes d'extension pour convertir IQueryable<T>
et IEnumerable<T>
-ReadOnlyCollection<T>
?méthodes d'extension pour convertir IQueryable <T> et IEnumerable <T> à ReadOnlyCollection <T>
Merci
Comment écrire des méthodes d'extension pour convertir IQueryable<T>
et IEnumerable<T>
-ReadOnlyCollection<T>
?méthodes d'extension pour convertir IQueryable <T> et IEnumerable <T> à ReadOnlyCollection <T>
Merci
public static ReadOnlyCollection<T> AsReadOnlyCollection<T>(this IEnumerable<T> source)
{
if(source == null)
throw new ArgumentNulLException("source");
IList<T> list = source as IList<T> ?? source.ToList();
return new ReadOnlyCollection<T>(list);
}
Notez qu'il n'y a pas une telle chose comme "conversion" d'un IEnumerable<T>
dans ce cas (comme avec toutes les autres méthodes dans la pile LINQ), vous récupérerez un objet différent qu'avant.
List<T>
contient déjà une méthode d'extension AsReadOnly()
, donc il suffit de faire quelque chose comme:
queryable.ToList().AsReadOnly()
'source comme IList ?? source.ToList(); '? –
Snowbear
Oh, bien sûr. Je fais généralement le tour de l'opérateur de coalescence car je ne viens pas naturellement à moi (pas que je ne le comprends pas). – Femaref
désolé, oublié le paramètre de type générique dans le corps de la méthode. – Femaref