C# int的列表获取达到某个值的记录
我有一个C# int的列表获取达到某个值的记录,c#,.net,linq,C#,.net,Linq,我有一个列表,我需要总数达到某个值的所有第一个记录 列表值=新列表{10,30,70,50,60} 值为100,因此我需要10,30,70的列表如何使用linq获得它如果您坚持使用linq,请尝试使用TakeWhile(使用项而总和很小): 是的,我可以用for循环得到它,我想在LINQ中,在项目中,它甚至有点复杂,它必须是100,还是100以下的最近值?10、30和70的结果是110,而不是100。最好你也添加for循环逻辑。TakeWhile(item=>(sum+=item)
列表
,我需要总数达到某个值的所有第一个记录
列表值=新列表{10,30,70,50,60}代码>
值为100,因此我需要10,30,70的列表如何使用linq获得它如果您坚持使用linq,请尝试使用TakeWhile
(使用项而总和很小):
是的,我可以用for循环得到它,我想在LINQ中,在项目中,它甚至有点复杂,它必须是100,还是100以下的最近值?10、30和70的结果是110,而不是100。最好你也添加for循环逻辑。TakeWhile(item=>(sum+=item)<100)
当你想知道下一票时,我会告诉你我对它的外部理解。但我不是选民。你的问题不清楚。起初,您的问题的文本看起来是“找到与目标值之和最接近的子集”。关于子集的经典作业问题。但你的预期结果不符合。由于句子太少,也没有对预期结果的逻辑做出明确解释,读者只有两种选择。要么你的问题是准确的,结果是不准确的,要么你的问题是不清楚的,所以我们不了解结果。为什么问题得到了-1好的,谢谢这是我从Morningurgh寻找的。您在LINQ查询中使用了外部状态。@avinash可能是因为您没有表现出任何努力。您当前的代码,它失败的原因。它失败的地方,等等。。。
List<int> Values = new List<int>() {
10, 30, 70, 50, 60};
int sum = 0;
var result = Values
.TakeWhile(item => (sum += item) <= 100) // or < depending on shall we stop on 100 or not
.ToList();
List<int> result = new List<int>();
// or sum < 100
for (int i = 0, sum = 0; i < Values.Count && sum <= 100; sum += Values[i++])
result.Add(Values[i]);