Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# int的列表获取达到某个值的记录_C#_.net_Linq - Fatal编程技术网

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