使用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结构信息成员对列表进行排序
答案 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
(或相反,您必须选择订单)。