Как обновить одно целое число в списке - PullRequest
0 голосов
/ 21 июня 2019

есть ли способ обновить одно целое число в списке.

Допустим, у меня есть список с оставшимся пространством в некоторых полях, и я хочу обновить его.как я могу сделать что-то вроде этого:

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 ]

1 голос
/ 21 июня 2019

, как предложил Рон Бейер, используя FindIndex, добивается цели

var index = boxCapacities.FindIndex(bc => bc >= itemToStore.Size());
if (index != -1) {
    boxCapacities[index] -= itemToStore.Size();
}

Я все еще открыт для других решений, если они более элегантны или работают лучше

0 голосов
/ 21 июня 2019

Возможно, более сложный, но просто для изучения возможностей, которые вы можете иметь

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...