La création de N objets et en les ajoutant à une liste

J'ai une méthode qui prend en N, le nombre d'objets que je veux créer, et j'ai besoin de retourner une liste de N objets.

Actuellement je peux le faire avec une simple boucle:

    private static IEnumerable<MyObj> Create(int count, string foo)
    {
        var myList = new List<MyObj>();

        for (var i = 0; i < count; i++)
        {
            myList .Add(new MyObj
                {
                    bar = foo
                });
        }

        return myList;
    }

Et je me demandais si il y a une autre façon, peut-être avec LINQ pour créer cette liste.

J'ai essayé:

    private static IEnumerable<MyObj> CreatePaxPriceTypes(int count, string foo)
    {
        var myList = new List<MyObj>(count);

        return myList.Select(x => x = new MyObj
            {
                bar = foo
            });

    }

Mais cela ne semble pas remplir ma liste.

J'ai tenté de changer le sélectionner pour un foreach mais c'est la même affaire.

J'ai réalisé que la liste a de l' capacité du comte et de LINQ n'est pas de trouver tous les éléments pour effectuer une itération.

        myList.ForEach(x => x = new MyObj
        {
            bar = foo
        });

Est-il correct de LINQ opérateur à utiliser pour obtenir que cela fonctionne? Ou devrais-je simplement s'en tenir à la boucle?

  • LINQ est un outil de requête, il ne devrait pas être utilisé en excès pour la création d'objets
  • Opérateurs Linq comme .Select() sont purement pour l'interrogation des ensembles et se projeter pour les formulaires requis; ils ne sont pas destinés à faire tout ce qui modifie le jeu original. Ce que vous essayez de faire avec .Select() n'est pas recommandé, mais il peut être fait au travail. Je collerais avec la boucle.
  • cela peut être d'une certaine valeur: blogs.msdn.com/b/ericlippert/archive/2009/05/18/...
  • si vous voulez pimenter vous pouvez utiliser yield return new MyObj(){ ... }; au lieu de sauver le temporaire de la liste
  • Ne serait pas MyObj[100].AsEnumerable() travail?