MVC 5如何绑定LINQ结果(数字)与数组[i]



假设我有一个库存插槽范围从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

最新更新