Syntax zum Initialisieren einer Liste mit vorhandenen List -Objekten
-
05-07-2019 - |
Frage
Ist es möglich, eine Liste mit anderen Liste in C#zu initialisieren? Angenommen, ich habe diese zu Listen:
List<int> set1 = new List<int>() {1, 2, 3};
List<int> set2 = new List<int>() {4, 5, 6};
Was ich gerne haben möchte, ist eine Abkürzung für diesen Code:
List<int> fullSet = new List<int>();
fullSet.AddRange(set1);
fullSet.AddRange(set2);
Danke im Voraus!
Lösung
So ermöglichen doppelte Elemente (wie in Ihrem Beispiel):
List<int> fullSet = set1.Concat(set2).ToList();
Dies kann für weitere Listen verallgemeinert werden, dh ...Concat(set3).Concat(set4)
. Wenn Sie doppelte Elemente entfernen möchten (die Elemente, die in beiden Listen erscheinen):
List<int> fullSet = set1.Union(set2).ToList();
Andere Tipps
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>
Wenn Sie die Liste wollenu003Cint> anstelle von iEnumerableu003Cint> du könntest es tun:
List<int> fullSet = new List<int>(set1.Union(set2));
List<int> fullSet = new List<int>(set1.Union(set2));
könnte funktionieren.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow