C# 用C求整数数组的和#

C# 用C求整数数组的和#,c#,C#,我想要数组中的数字之和,并且不超过1002。如何修复它? 不需要把所有的数字相加,只需要那些符合条件的数字 我是这样做的,但我认为这不是正确的方法 List<int> list = new List<int> { 4, 900, 500, 498, 4 }; int sum = list.Skip(2).Take(3).Sum(); Console.WriteLine(sum); Console.ReadLine();

我想要数组中的数字之和,并且不超过1002。如何修复它? 不需要把所有的数字相加,只需要那些符合条件的数字

我是这样做的,但我认为这不是正确的方法

 List<int> list = new List<int> { 4, 900, 500, 498, 4 };
        int sum = list.Skip(2).Take(3).Sum();
        Console.WriteLine(sum);
        Console.ReadLine();
List List=新列表{4900500498,4};
int sum=list.Skip(2).Take(3.sum();
控制台写入线(总和);
Console.ReadLine();

不清楚您想要什么。。。如果您想对一些数字求和,使总和在达到1002时停止求和,您可以:

List<int> list = new List<int> { 4, 900, 500, 498, 4 };
var lst = list.Skip(2).Take(3);

int sum = 0;

foreach (int num in lst)
{
    int sum2 = sum + num;

    if (sum2 > 1002)
    {
        break;
    }

    sum = sum2;
}

Console.WriteLine(sum);
List List=新列表{4900500498,4};
var lst=list.Skip(2)、Take(3);
整数和=0;
foreach(lst中的int num)
{
int sum2=总和+数值;
如果(sum2>1002)
{
打破
}
sum=sum2;
}
控制台写入线(总和);
或者你可以

List<int> list = new List<int> { 4, 900, 500, 498, 4 };
var lst = list.Skip(2).Take(3);

int sum = 0;

foreach (int num in lst)
{
    sum += num;

    if (sum >= 1002)
    {
        break;
    }
}

Console.WriteLine(sum);
List List=新列表{4900500498,4};
var lst=list.Skip(2)、Take(3);
整数和=0;
foreach(lst中的int num)
{
sum+=num;
如果(总和>=1002)
{
打破
}
}
控制台写入线(总和);
如果通过添加一个数字,第一个将停止,它将超过1002,而第二个将在达到1002后停止


请注意,这两项都不能直接在LINQ中轻松完成。

为什么
跳过
接受
?不确定您试图在这里实现什么。
intsum=list.Where(x=>x<1002.sum()在测试代码中没有超过1002限制的值。那么,你到底想达到什么目的呢?你想要所有数字的总和不超过1002,还是直到你有一个高于1002的数字为止?但还没有4900和500超过这个限制?或者你需要确切的值1002吗?然而,当总和应该正好是1002时,这些方法都不会停止。我认为OP需要的是。@HimBromBeere如果他想解决这个问题,那就是另一个问题:-)我认为OP
Skip
Take
是试图解决这个问题。还有一些随机的。