假设我有一个库存插槽范围从1到100,如何从范围中找到第一个空插槽?
首先,我正在考虑使用array.findIndex,但我卡在这里。
var InventorySlot = (from i in db.InventoryModel where i.userId == 1 select i.slot).ToArray();
int index = Array.FindIndex(InventorySlot, item => item == null );
这将创建
- 库存插槽[0] = 1
- 库存插槽[1] = 3
- contickoryslot [2] = 4
那么如何创建?
- 库存插槽[1] = x
- contingroryslot [3] = x
- 库存插槽[4] = x
也许我可以使用array.findindex找到空数组?我需要的索引变量是2(数组中的第一个空数)
您需要做的是将数据库的结果与范围进行比较毫无例外:
var firstEmptySlot = Enumerable.Range(1, InventorySlot.Max()).Except(InventorySlot).First();
如果您想获得最大的插槽加一个插槽,则可以做到:
:var firstEmptySlot = Enumerable.Range(1, InventorySlot.Max()+1).Except(InventorySlot).First();
在这种情况下,您需要测试firstEmptySlot
,以确保它是< = 100。
您可以通过将范围限制为1-100:
来组合测试和查询var firstEmptySlot = Enumerable.Range(1, Math.Min(InventorySlot.Max()+1, 100)).Except(InventorySlot).FirstOrDefault();
如果没有1-100的空插槽,您将获得0
。