我设计了一个类,它基本上只是一个存储大量数据属性的对象。我已经在课堂上实现了 IComparable。类的对象被实例化并存储在列表中。
对象的某些字段决定了我对哪些字段进行排序(存在层次结构),因此层次结构是:
- 1) 名称(在实例化时定义)
- 2)产品(在实例化时定义)
- 3)NetGroup(定义后实例化,在初始创建列表后,我迭代回来,执行计算,并设置组。)
- 4) 日期(在实例化时定义)
有几个标志(布尔字段)确定是否在排序层次结构中使用上述两个。
- 5) AllowProductGroupingInd(在实例化时定义)
- 6) AllowDateGroupingInd(在实例化时定义)
在相对较小的列表(n = 1000)上排序的性能很差,一般在 500 毫秒左右。
我不确定我是否正确实施了比较器。我的方法如下所示:
public int CompareTo(Exposure rfpe)
{
if (Name.CompareTo(rfpe.Name) != 0)
return Name.CompareTo(rfpe.Name);
else
{
if (AllowProductGroupingInd == false)
{
if (ProductId.CompareTo(rfpe.ProductId) != 0)
return ProductId.CompareTo(rfpe.ProductId);
}
if (NetGroup.CompareTo(rfpe.NetGroup) != 0)
return NetGroup.CompareTo(rfpe.NetGroup );
else if (AllowDateGroupingInd == false)
{
if (Date.CompareTo(rfpe.Date) != 0)
return Date.CompareTo(rfpe.Date);
else
return 0;
}
return 0;
}
}
我正在使用 C# 3.0,所以我不能使用 LINQ。这是我想要完成的合理实现吗?有没有更优雅的解决方案?在我看来,我可能使用了太多条件,但我不确定如何解决这个问题。