otrzymuje następujące obiektu:LINQ: Jak kwerendy przedmioty z kolekcji aż suma osiągnie pewną wartość
public class Product {
string Name {get;}
int Quantity {get;}
}
użyciu LINQ, jak chciałbym kwerendy List<Product>
dopóki nie dostał sumę >=
dana ilość? Innymi słowy, jeśli moja lista wyglądała
Name Quantity
-----------------
prod1 5
prod2 6
prod7 7
Chcę kwerendy listy i ciągnąć instancje aż dostaję Suma >=8
. W takim przypadku dostanę pierwsze dwie pozycje na liście. Gdybym chciał sumę >= 12
, dostałbym wszystkie trzy.
Wiem, że mogę napisać pętlę, aby zrobić to dla mnie, ale fantazjowałem, że był jakiś zgrabny jednolinijkowy używający Linq do osiągnięcia tego samego.
Dzięki
To jest słodkie .. – jlembke
Byłoby bardziej wydajne zrobić dokładnie to samo, z wyjątkiem zamiast. Gdzie(), aby użyć .TakeWhile(), i sprawdź, czy suma na początku jest większa niż 500, a nie na końcu (w przeciwnym razie użyjesz jednego za mało elementów.) Następnie iteracja ustałaby, gdy bariera 500 jest złamany. – mquander
@mquander, oba dobre punkty, zaktualizowano odpowiedź – JaredPar