Tengo List<Product[]>
y necesito unirlos en uno Product[]
.¿Cómo combinar varias matrices en una lista usando Linq?
19
A
Respuesta
44
Puede usar SelectMany
y luego ToArray
para hacerlo.
var result = source.SelectMany(i => i).ToArray();
4
Puede utilizar .Concat()
método de extensión, así, y luego .ToArray()
: x.Concat(y).Concat(z).ToArray();
0
Para cualquier más complejo se une a IEnumerable
, y GetEnumerator
yield
son tus amigos y son super performant. Solo por diversión, aquí hay un código que muestra que la extensión de Linq con sus propios métodos personalizados no tiene que dar miedo;
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");
}
Cuestiones relacionadas
- 1. ¿Se pueden combinar varias listas con LINQ?
- 2. ¿Cómo combinar dos listas usando LINQ?
- 3. Cómo combinar dos operaciones de suma en una usando LINQ?
- 4. ¿Cómo combinar 2 listas usando LINQ?
- 5. ¿Cómo puedo combinar y ordenar varias listas usando Ruby?
- 6. ¿Puedes combinar varias imágenes en una sola usando JavaScript?
- 7. ¿Cómo puedo combinar matrices PHP?
- 8. PHP: Combinar matrices multidimensionales
- 9. Combinar dos matrices en Hash
- 10. Combinar varias expresiones regulares en una sola
- 11. Combinar dos matrices en JavaScript
- 12. Cómo combinar varias listas de IEnumerable juntas
- 13. combinar dos matrices
- 14. cómo combinar varias veces sucursales en Mercurial
- 15. ¿Cómo puedo combinar varias filas en una lista delimitada por comas en SQL Server 2005?
- 16. ¿Cómo puedo combinar varias filas en una lista delimitada por comas en SQL Server?
- 17. ¿Cómo puedo combinar varias filas en una lista delimitada por comas en Oracle?
- 18. ¿Cómo combinar/sumar registros por grupo usando LINQ?
- 19. matlab - cómo combinar/entrelazar 2 matrices?
- 20. Combinar dos matrices en una matriz en python y ordenar
- 21. ¿Cómo obtener elementos duplicados de una lista usando LINQ?
- 22. cómo combinar una colección de colecciones en Linq
- 23. Combinar eficientemente matrices de cadenas en .NET, manteniendo distintos valores
- 24. Combinar dos matrices de enteros
- 25. Combinar matrices ordenadas N en ruby perezosamente
- 26. Varias tablas combinación izquierda usando LINQ
- 27. Multiplica varias matrices en numpy
- 28. Cómo combinar varias funciones de jquery
- 29. Encontrar combinaciones de una lista agrupada usando LINQ en C#
- 30. La comparación de matrices usando LINQ en C#
Por favor, dedique un poco más de trabajo a aclarar sus preguntas en el futuro. –
La próxima vez sea más útil Dave –
Nada de malo con la pregunta. – snowcode