列出嵌套结构成员的排序

时间:2012-03-14 08:18:16

标签: c#

使用IComparer的实现整理列表时遇到一些问题。

public struct VAL
{
    public int i;
    public string s;
}

public struct INFO
{
    public string name;
    public VAL val;
    public string address;
}

public class ListSorter:IComparer<INFO>
{
    public enum SORT_TYPE{BYNAME, BYVAL,BYADDRESS};
    public int Compare(INFO i1, INFO i2)
        {
        switch(sortType)
        {
            case SORT_TYPE.BYNAME;
                return string.Compare(i1.name, i2.name);
            case SORT_TYPE.BYADDRESS:
                return string.Compare(i1.address, i2.address); 
            case SORT_TYPE.BYVAL:
            {
                ??????
            }
        }
    }   
}

类ListSorter中的比较函数是我如何比较给定INFO结构中的字符串的示例。但我不知道如何根据VAL结构信息成员对列表进行排序

1 个答案:

答案 0 :(得分:3)

通常你会做类似的事情:

case SORT_TYPE.BYVAL:
{
    int ret = i1.VAL.i.CompareTo(i2.VAL.i);
    if (ret != 0)
    {
        return ret;
    }
    return i1.VAL.s.CompareTo(i2.VAL.s);
}

首先比较i,如果它们相等,则比较s(或相反,您必须选择订单)。

相关问题