Question

est-il possible d'initialiser une liste avec d'autres listes en C #? Dites que je possède ces listes:

List<int> set1 = new List<int>() {1, 2, 3};
List<int> set2 = new List<int>() {4, 5, 6};

Ce que j'aimerais avoir, c'est un raccourci pour ce code:

List<int> fullSet = new List<int>();
fullSet.AddRange(set1);
fullSet.AddRange(set2);

Merci d'avance!

Était-ce utile?

La solution

Pour autoriser les éléments en double (comme dans votre exemple):

List<int> fullSet = set1.Concat(set2).ToList();

Ceci peut être généralisé pour plus de listes, c'est-à-dire ... Concat (set3) .Concat (set4) . Si vous souhaitez supprimer les éléments en double (ceux qui apparaissent dans les deux listes):

List<int> fullSet = set1.Union(set2).ToList();

Autres conseils

        static void Main(string[] args)
        {
            List<int> set1 = new List<int>() { 1, 2, 3 };
            List<int> set2 = new List<int>() { 4, 5, 6 };

            List<int> set3 = new List<int>(Combine(set1, set2));
        }

        private static IEnumerable<T> Combine<T>(IEnumerable<T> list1, IEnumerable<T> list2)
        {
            foreach (var item in list1)
            {
                yield return item;
            }

            foreach (var item in list2)
            {
                yield return item;
            }
        }
var fullSet = set1.Union(set2); // returns IEnumerable<int>

Si vous souhaitez lister < int > au lieu de IEnumerable < int > tu pourrais faire:

List<int> fullSet = new List<int>(set1.Union(set2));
List<int> fullSet = new List<int>(set1.Union(set2));

peut fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top