有没有一种方法可以更新列表中的一个整数。
让我们说我有一个列表,其中某些框中的剩余空间我想更新。我该怎么做这样的事情:
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变量时,我不会更新列表中的整数。
是否有一种优雅的方法可以解决此问题,而无需创建仅用于封装整数的新对象?
答案 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();
}