¿Hay una forma de LINQ de convertir 2 elementos de línea en N basados en la cantidad?
Aquí está el código que funciona, ¿hay alguna manera de usar LINQ para convertir 2 elementos de línea en N según la cantidad?
var lista = new List
new LineItem {Info = “dos de estas”, Cantidad = 2},
new LineItem {Info = “una de estas”, Cantidad = 1}
};
// imprime dos líneas
// 2x – dos de estas
// 1x – una de estas
foreach (var entrada en lista) Consola.WriteLine (entrada);
Console.WriteLine (“ahora quiero que se impriman tres líneas como para la bolsa de la compra”);
// imprime líneas de tres cantidades
// 2x – dos de estas
// 2x – dos de estas
// 1x – una de estas
// esto funciona, ¿hay alguna manera LINQy limpia?
var bolsa = nueva Lista
foreach (var artículo en la lista)
{
si (artículo.Cantidad == 1)
bolsa.Añadir (artículo);
más
para (var contador = 0; contador < artículo.Cantidad; ++ contador)
bolsa.Añadir (artículo);
}
foreach (var entrada en bolsa) Consola.WriteLine (entrada);
davy.ai
Sí, hay una forma de LINQ para convertir dos elementos de línea en N basados en la cantidad. Puedes usar el método
SelectMany
para aplanar la lista de elementos de línea y luego usar el métodoTake
para tomar el número de elementos basados en la cantidad. Aquí hay un ejemplo: