C#排序有序字典

C#排序有序字典,c#,.net,sorting,collections,ordereddictionary,C#,.net,Sorting,Collections,Ordereddictionary,我正在使用有序字典(因为它是数据结构,使我能够通过键和索引访问项。) 我正在尝试使用气泡排序对其进行排序 (特别是因为将调用此函数的某些遗留代码仅使用一个方法定义了comparator,即一个元素如何小于另一个元素。 ILzObjectComparator_Less(ByVal首先作为对象_ ByVal(第二个作为对象)作为布尔值) ) 当我的代码工作时,也就是说,它是按值排序的,它是在改变键值映射 这是我的方法- public void SortUsingComparer(LzColl

我正在使用有序字典(因为它是数据结构,使我能够通过键和索引访问项。)

我正在尝试使用气泡排序对其进行排序

(特别是因为将调用此函数的某些遗留代码仅使用一个方法定义了comparator,即一个元素如何小于另一个元素。 ILzObjectComparator_Less(ByVal首先作为对象_ ByVal(第二个作为对象)作为布尔值) )

当我的代码工作时,也就是说,它是按值排序的,它是在改变键值映射

这是我的方法-

    public void SortUsingComparer(LzCollections.ILzObjectComparator Comparator)
    {
        for (int j = 0; j < od.Count; j++)
        {
            for (int i = 0; i < od.Count - 1; i++)
            {
                if(Comparator.Less( od[i+1],od[i]))
                {
                    temp = od[i + 1];
                    od[i + 1] = od[i];
                    od[i] = temp;
                }
            }
        }
    }
public void sortusingcomarator(LzCollections.ILzObjectComparator Comparator)
{
对于(int j=0;j
有一个,但使用了OrderBy,我无法与我们的遗留代码使用的ILzObjectComparator进行映射。)
非常感谢您的帮助。

您引用的不是
词典中的
元素
,而是它们的
od[i]

您可以尝试改用
元素
od.ElementAt(i)
,但这不允许您为其分配任何内容,也不能执行
InsertAt()

请注意,我甚至不确定
字典中的顺序是否得到保证

所以,我认为你做不到

但是,当然,还有课堂

但由于您需要使用自定义比较器,我想您必须切换到另一个集合类,可能是
List

这里有一个例子

List<Tuple<int, int>> od = new List<Tuple<int,int>>();
List od=new List();
添加几个元素后,可以按以下任一项对其进行排序:

for (int j = 0; j < od.Count; j++)
{
    for (int i = 0; i < od.Count - 1; i++)
    {
        // insert your custom comparer here:
        if (od.ElementAt(i + 1).Item1 < od.ElementAt(i).Item1)
        {
            var temp0 = od.ElementAt(i);
            var temp1 = od.ElementAt(i + 1);
            od.RemoveAt(i);
            od.RemoveAt(i);
            od.Insert(i, temp1);
            od.Insert(i+1, temp0);
        }
    }
}
for(int j=0;j

当然,
元组
不如
字典
有用,例如唯一性等。

您是否考虑过使用.NET内置的支持来使用自己的排序?您是否解决了问题?您使用的是哪个有序字典类?那么什么是
od
?您能显示您的数据结构吗?这是没有用的,因为当您使用字典时,您可以进行键查找并拥有唯一的条目,而使用列表会变得效率低下。键查找与排序/比较有什么关系我认为这个问题本身没有多大意义。创建OrderedDixtionary时,他应该使用cusotm比较器。不知道他想用泡泡排序实现什么。。