【发布时间】:2016-06-09 00:13:01
【问题描述】:
实际上,标题让我很困惑,我什至不确定它是否正确。我在这里遇到以下问题:我有一个列表,其中每个配方都包含一个 requiredItem[] 数组(大小 15) 这个必需的项目数组可以包含配方所需的项目。我想做的是将所有食谱放在一个单独的列表中,在他们的食谱中使用木材作为必需项目之一。 例如,一个配方可能需要 10 块木头来制作一张木桌。这个食谱在食谱列表中。快速的谷歌搜索让我找到了以下内容,但我不知道如何访问 requiredItem 索引:
List<Recipe> rec = Main.recipe.ToList();
rec.Select((s, i) => new { i, s })
.Where(t => t.s.requiredItem[indexhere].type == 9)
.Select(t => t.i)
.ToList()
很抱歉我没有看到这个,如果答案真的很简单,我不会感到惊讶。
我还尝试了以下方法。它不会出现任何错误,但实际上并没有选择食谱。
Item refItem = new Item();
refItem.SetDefaults(ItemID.Wood, false);
List<int> selectWood = new List<int>(rec.Select((r, i) => new { i, r }).Where(x => x.r.requiredItem.ToList().Contains(refItem)).Select(x => x.i).ToList());
ErrorLogger.Log(selectWood.ToArray().ToString());
List<int> indices = new List<int>();
foreach (var indice in selectWood)
{
for (int i = 0; i < Main.recipe[indice].requiredItem.Length; i++)
{
var item = Main.recipe[indice].requiredItem[i];
if (item.type == ItemID.Wood && item.stack >= 10) indices.Insert(0, indice);
}
}
foreach (var indice in indices)
{
++numberRecipesRemoved;
rec.RemoveAt(indice);
}
【问题讨论】:
-
设置数据示例并向我们展示要返回的示例数据项。