Ich habe List<Product[]>
und ich muss sie in eine verbinden.Wie verschmelzen mehrere Arrays in einer Liste mit Linq?
19
A
Antwort
44
Sie können dazu und dann ToArray
verwenden.
var result = source.SelectMany(i => i).ToArray();
4
Sie verwenden .Concat()
Erweiterungsmethode als auch, und dann .ToArray()
: x.Concat(y).Concat(z).ToArray();
0
Für komplexere verbindet IEnumerable
, GetEnumerator
und yield
deine Freunde sind und sind super performant. Nur zum Spaß, hier ist ein Code, der das Erweitern von Linq mit Ihren eigenen benutzerdefinierten Methoden zeigt, muss nicht gruselig sein;
public static class MyLinqExtensions
{
public static IEnumerable<int> RoundRobin(this IEnumerable<int> a, IEnumerable<int> b)
{
var ae = a.GetEnumerator();
var be = b.GetEnumerator();
bool aHasNumber = ae.MoveNext();
bool bHasNumber = be.MoveNext();
while (aHasNumber || bHasNumber)
{
if (aHasNumber)
{
yield return ae.Current;
aHasNumber = ae.MoveNext();
}
if (bHasNumber)
{
yield return be.Current;
bHasNumber = be.MoveNext();
}
}
}
}
void Main()
{
var arr1 = new[] { 1, 2, 3, 4 };
var arr2 = new[] { 4, 5, 6 };
var arr3 = new[] { 7, 8, 9};
var arr4 = new int[] { };
// arrays the same size
Assert.AreEqual(new[] { 4, 7, 5, 8, 6, 9 }, arr2.RoundRobin(arr3).ToArray());
// array 1 bigger than array 2
Assert.AreEqual(new[] { 1, 4, 2, 5, 3, 6, 4 }, arr1.RoundRobin(arr2).ToArray());
// array 1 smaller than 2
Assert.AreEqual(new[] { 4, 1, 5, 2, 6, 3, 4 }, arr2.RoundRobin(arr1).ToArray());
// 2 empty, 1 not
Assert.AreEqual(new[] { 4, 5, 6 }, arr2.RoundRobin(new int[] { }).ToArray());
// 1 empty, 2 not
Assert.AreEqual(new[] { 1, 2, 3, 4 }, arr1.RoundRobin(new int[] { }).ToArray());
// both empty
Assert.AreEqual(new int[] { }, arr4.RoundRobin(arr4).ToArray());
// prove it's Linq
Assert.AreEqual(new[] { 1, 4, 2}, arr1.RoundRobin(arr2).Take(3).ToArray());
Console.WriteLine("pass");
}
Verwandte Themen
- 1. Mehrere Arrays zu einzelnen Arrays verschmelzen
- 2. verschmelzen mehrere Arrays und foreach
- 3. Wie verschmelzen zwei Arrays innerhalb einer Variablen?
- 4. Arrays in Ruby/Rails verschmelzen
- 5. Merge 2 Arrays LINQ mit
- 6. verschmelzen alle Elemente in einer Liste Python
- 7. Aggregate mehrere Arrays in ein Array (Linq)
- 8. Wie verschmelzen mehrere Arrays, die von einer Funktion in PHP abhängig sind?
- 9. php multidimensionale Arrays ineinander verschmelzen
- 10. Wie verschmelzen Sub-Arrays innerhalb eines Arrays in Ruby?
- 11. Initialisierung einer Liste mit Arrays
- 12. Sampling einer Liste mit linq
- 13. JSON.NET und Arrays mit LINQ
- 14. Mehrere JavaScript-Dateien verschmelzen
- 15. Wie kann ich mithilfe von LINQ eine Gruppe eindeutiger Arrays aus einer Liste von Arrays abrufen?
- 16. verschmelzen zwei Arrays mit einem Separator, javascript
- 17. Verschmelzen zwei Arrays in ein Json-Objekt
- 18. Linq Abfrage - Liste in einer anderen Liste
- 19. Wie mehrere Arrays in einzelne JSON-Objekt
- 20. objective-c verschmelzen zwei Arrays von Wörterbüchern
- 21. Verschmelzen 2 verschiedene Arrays in Ruby
- 22. Abschlusswiderstandsprüftyps auf Liste verschmelzen
- 23. LINQ - Alle Elemente in einer Liste in einer Liste abrufen?
- 24. Wie mit XSL mehrere XML-Einträge in einen Baum verschmelzen
- 25. Linq - mehrere Durchschnittswerte in einer Abfrage berechnen
- 26. LINQ: Wie Liste der Elemente anhänge in einer anderen Liste
- 27. Linq mit Schlüssel und einer Liste
- 28. Flachen Liste in LINQ
- 29. Verschmelzen zwei Arrays mit ungleichen Werten in Schlüsselwertpaar
- 30. Wie verschmelzen Listen zu einer Liste von Tupeln?
Bitte setzen Sie ein wenig mehr Arbeit ein, um Ihre Fragen in Zukunft klarer zu machen. –
Das nächste Mal mehr hilfreich Dave –
Nichts falsch mit der Frage. – snowcode