es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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);

Tags:  ,

Answer

  1. Avatar for 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étodo Take para tomar el número de elementos basados en la cantidad. Aquí hay un ejemplo:

    var bolsa = lista.SelectMany(x => Enumerable.Repeat(x, x.Cantidad)).ToList();
    foreach(var entrada in bolsa) Console.WriteLine(entrada);
    

Comments are closed.