Dado el objeto siguiente:Linq: Cómo consultar los artículos en una colección hasta que la suma alcanza un determinado valor
public class Product {
string Name {get;}
int Quantity {get;}
}
usando LINQ, ¿cómo iba a consultar un List<Product>
hasta que consiguiera una suma >=
una cantidad dada? En otras palabras, si mi lista parecía
Name Quantity
-----------------
prod1 5
prod2 6
prod7 7
Quiero consultar la lista de instancias y tire hasta que consiga una suma >=8
. En este caso, obtendría los primeros dos artículos en la Lista. Si quisiera suma >= 12
, obtendría los tres.
Sé que puedo escribir un bucle para hacer esto por mí, pero estaba fantaseando que había un poco de una línea lisa utilizando Linq para lograr lo mismo.
Gracias
Eso es dulce ... – jlembke
Sería más eficiente hacer exactamente lo mismo excepto en lugar de. Where(), para usar .TakeWhile(), y verificar si la suma al inicio es mayor que 500, no al final (de lo contrario tomará uno de los pocos elementos). Entonces la iteración cesará cuando la barrera 500 sea roto. – mquander
@mquander, ambos puntos buenos, actualizó la respuesta – JaredPar