嵌套列表的索引

时间:2017-04-13 19:30:24

标签: c# list unity3d

如何从嵌套列表中的游戏对象获取索引?

List<List<GameObject>> gpl = new List<List<GameObject>>();
List<GameObject> cbl ;
c = new gameObject("cube1");
cbl.Add(c);
gpl.Add(cbl);
Debug.Log(gpl.IndexOf(c);

3 个答案:

答案 0 :(得分:0)

如果您只能访问random.choice,则需要首先搜索c

cbl

使用旧版C#语法的示例:

var gameIndex = gpl.FirstOrDefault(cbl => cbl.Contains(c))?.IndexOf(c);

答案 1 :(得分:0)

你无法在gpl中直接获得'c'的索引。这是因为'c'的类型为var cbl = gpl.FirstOrDefault(c => c.Contains(c)); if (cbl != null) { var gameIndex = cbl.IndexOf(c); } ,而gpl中的每个元素都是GameObject

所以你的任务分为两部分: 1)在cbl中获取'c'的索引 2)获取gpl中的cbl索引

以下是一些示例代码:

List<GameObject>

希望这有帮助!

答案 2 :(得分:0)

您可以使用Linq执行此操作并返回IEnumerable<Tuple<int,int>>,其中包含内部列表包含您的值(c)的列表中的所有索引(外部和内部)。

IEnumerable<Tuple<int,int>> indexes = 
   gpl.Select((games, i) => new {games, i})
      .Where(arg => arg.games.IndexOf(c) > -1)
      .Select(arg => Tuple.Create(arg.i, arg.games.IndexOf(c)));