如何检查字典是否已包含一组坐标?我正在使用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);
}
答案 0 :(得分:1)
尝试下一个代码:
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);
}