如何更新列表中的一个整数

时间:2019-06-21 16:35:23

标签: c# asp.net-core

有没有一种方法可以更新列表中的一个整数。

让我们说我有一个列表,其中某些框中的剩余空间我想更新。我该怎么做这样的事情:

foreach (var itemToStore in items) {
if (boxCapacities.Any(bc => bc >= itemToStore.Size())) {
    var availableBox = boxCapacities.First(tc => (bc => bc >= itemToStore.Size());
    availableBox -= itemToStore.Size();
}

}

上面的代码的问题是列表具有整数,并且这些整数是按值复制的,因此,当我更新availableBox变量时,我不会更新列表中的整数。

是否有一种优雅的方法可以解决此问题,而无需创建仅用于封装整数的新对象?

2 个答案:

答案 0 :(得分:1)

罗恩·拜尔(Ron Beyer)总结说,使用FindIndex可以达到目的

NameId               Value
1                    John
2                    Jacob
3                    Jingleheimer
4                    Schmidt

NameTypeId           Value
1                    First Name
2                    Middle Name
3                    Last Name
4                    Nickname

PersonId             Suffix                 DateOfBirth
1                                           01/01/1900

Person_PersonId      Name_NameId            NameType_NameTypeId        Order
1                    1                      1                          0
1                    2                      2                          0
1                    3                      2                          1
1                    4                      3                          0

如果其他解决方案更优雅或更出色,我仍然愿意接受其他解决方案

答案 1 :(得分:0)

可能更复杂,但是只是为了探索可能的可能性

foreach (var itemToStore in items)
{
    var idx = boxCapacities.Select((x, i) => new {index=i,ok= (x>=itemToStore.Size())})
                           .FirstOrDefault(k => k.ok);
    if(idx != null)
        boxCapacities[idx.index] -= itemToStore.Size();
}