0

如何检查字典是否已经包含一组坐标?我正在使用 SelectManager 和 Where 但计数仍然错误。我认为它没有检查通用列表中的值。

我希望它遍历 matchTile 并检查通用列表中的所有其他元素的条件(不是问题的一部分)。

如果满足该条件,则将其添加到同一组中。当下一次迭代到来时,它应该检查该元素是否已经被添加到一个组中。如果是,它会跳过它。如果没有,它会创建一个新组(列表)。

任何人都可以帮忙吗?

private void groupMatches(List<int[]> matchTile){
    Dictionary<int, List<int[]>> groups = new Dictionary<int, List<int[]>>();
    int i = 0;

    foreach(int[] coord in matchTile){
        var alreadyCounted = groups.SelectMany(x => x.Value).Where(x => x[0] == coord[0] && x[1] == coord[1]);

        Debug.Log ("counted: " + alreadyCounted.Count ());

        if(alreadyCounted.Count() > 0) continue;

        // Create new group
        groups.Add(i, new List<int[]>());   
        groups[i].Add(coord);

        foreach(int[] nextCoord in matchTile){
            if (...)
            {
                groups[i].Add(nextCoord);   
            }
        }

        i++;
    }   

    Debug.Log ("groups: " + groups.Count);
}
4

1 回答 1

1

Try next code:

private void groupMatches(List<int[]> matchTile)
{    
    Dictionary<int, List<int[]>> groups 
         = matchTile.GroupBy(line => new{x = line[0], y = line[1]})
                    .Select((grp, index) => new{index, grp})
                    .ToDictionary(info => info.index, info => info.grp.ToList());

    Debug.Log("groups: " + groups.Count);
}
于 2013-05-19T09:44:59.320 回答