给出以下对象:
public class Product {
string Name {get;}
int Quantity {get;}
}
Run Code Online (Sandbox Code Playgroud)
使用Linq,在获得给定数量List<Product>
的总和之前,我将如何查询>=
?换句话说,如果我的列表看起来像
Name Quantity
-----------------
prod1 5
prod2 6
prod7 7
Run Code Online (Sandbox Code Playgroud)
我想查询List并拉出实例,直到得到Sum >=8
.在这种情况下,我将获得列表中的前两项.如果我想要总和>= 12
,我会得到这三个.
我知道我可以写一个循环为我做这个,但我幻想有一些光滑的单行使用Linq来实现同样的事情.
谢谢
Jar*_*Par 20
这是一个快速2班轮.
var sum = 0;
var query = col.Where(x => { var temp = sum; sum += x.Quantity; return temp < 500; });
Run Code Online (Sandbox Code Playgroud)
将500替换为您选择的常量或变量.
编辑
这是mquander更有效的解决方案
var sum = 0;
var query = col.TakeWhile(x => { var temp = sum; sum += x.Quantity; return temp < 500; });
Run Code Online (Sandbox Code Playgroud)