在net 2.0中对不同类型的结构体进行排序

本文关键字:结构体 排序 同类型 net | 更新日期: 2023-09-27 18:09:08

是否有人知道如何排序不同类型的结构体列表(下面的示例代码)?

我们目前正在使用。Net 2.0,所以我们不能使用Linq。

提前感谢!

    public struct dataKeys
    {
        private long key1;
        private long key2;
        private string key3;
        public long Key1;
        {
            get { return key1;}
            set { key1 = value; }
        }
        public long Key2;
        {
            get { return key2;}
            set { key2 = value; }
        }
        public string Key3;
        {
            get { return key3;}
            set { key3 = value; }
        }
    }
    . . .
    List<dataKeys> dataKeyList = new List<dataKeys>();
    // tried this but will only work for one 
    // dataKeyList.Sort((s1, s2) => s1.Key1.CompareTo(s2.Key1));

类似:

FROM:
2, 2, C
1, 1, A
1, 3, A
3, 1, B
1, 2, B
2, 1, A
2, 3, A
1, 2, A
TO:
1, 1, A
1, 2, A
1, 2, B
1, 3, A
2, 1, A
2, 2, C
2, 3, A
3, 1, B

在net 2.0中对不同类型的结构体进行排序

dataKeyList.Sort((s1, s2) => {
    int result = s1.Key1.CompareTo(s2.Key1);
    if(result == 0) {
        result = s1.Key2.CompareTo(s2.Key2);
        if(result == 0) {
            result = s1.Key3.CompareTo(s2.Key3);
        }
    }
    return result;
});

或编写自定义比较器(IComparer<dataKeys>),或让dataKeys实现IComparable<dataKeys>

是的,使用。sort与自定义比较委托:

http://msdn.microsoft.com/en-us/library/w56d4y5z%28v=VS.80%29.aspx