8
votes

Comment obtenir une liste vide d'une collection?

J'ai une collection de classe anonyme et je veux revenir une liste vide de celui-ci.

Quelle est la meilleure expression lisible à utiliser?

i si ce qui suit mais je ne sais pas pense qu'ils sont suffisamment suffisants: xxx

Remarque: je ne veux pas vider la collection elle-même.

Toute suggestion!


2 commentaires

Au lieu d'un type anonyme, il est peut-être temps de créer un concret?


@ODed: Oui, vous avez raison. Merci.


4 Réponses :


6
votes

Pour des raisons de performance, vous devez vous en tenir à la première option que vous avez proposée.

L'autre itérayez sur toute la collection avant de renvoyer une liste vide.

Parce que le type anonyme, il n'y a aucun moyen, dans le code source, pour créer une liste. Il y a cependant un moyen de créer une telle liste par la réflexion.


0 commentaires

10
votes

Étant donné que votre première suggestion fonctionne et devrait bien fonctionner - si la lisibilité est la seule question, pourquoi ne pas créer une méthode d'extension: xxx

Vous pouvez reflacter votre exemple à xxx


0 commentaires

13
votes

En réalité, si vous utilisez une extension générique, vous n'avez même pas à utiliser de linq pour y parvenir, vous avez déjà le type anonyme exposé via T

public static IList<T> GetEmptyList<T>(this IEnumerable<T> source)
{
    return new List<T>();
}

var emp = MyCollection.GetEmptyList();


0 commentaires

39
votes

Quoi de quoi:

Enumerable.Empty<T>().ToList<T>();


1 commentaires

C'est mieux si vous souhaitez revenir en Ineumable. Il est équivalent à renvoyer une nouvelle liste () pour les listes. Tolist La méthode d'extension fait une nouvelle liste sous la hotte.