我无法解决这个问题。
我有两个带相同键的词典。然而,第二个字典混合在一起,并且键的顺序不同。 我希望能够计算新词典中每个键与第一个词典中原始位置的距离。
例如:密钥1被移动到密钥3(在第二个字典中),因此障碍将是2
答案 0 :(得分:0)
据我所知,没有内置方法可以执行此操作。但是您可以使用此方法获取两个字典项之间的索引差异(按键)。
public static int GetIndexDifference(IDictionary source, IDictionary target, object key)
{
int index1=0, index2=0;
int currentPosition = 1;
foreach (var element in source.Keys)
{
if (element.Equals(key))
{
index1 = currentPosition;
break;
}
currentPosition++;
}
currentPosition = 1;
foreach (var element in target.Keys)
{
if (element.Equals(key))
{
index2 = currentPosition;
break;
}
currentPosition++;
}
return Math.Abs(index1 - index2);
}
你可以像这样使用它:
var dict1 = new Dictionary<string, string> {{"sample1", "some item"}, {"sample2", "some item"}};
var dict2 = new Dictionary<string, string> { { "sample2", "some item" },{ "sample1", "some item" }, };
Console.WriteLine(GetIndexDifference(dict1,dict2,"sample1"));
或者您可以将它与LINQ一起使用:
var disOrders = dict1.Select(item => GetIndexDifference(dict1, dict2, item.Key)).ToList();
它会将所有disOrders计为List<int>