迭代包含复杂对象的嵌套列表的最有效方法

时间:2016-06-20 00:06:01

标签: c#

我正在构建一个C#CSV文件比较器。

我有三个类,其中两个包含子类列表...

public class ExcelSchema  
{
    public string SchemaName { get; set; }
    public List<RowObjects> RowObjects { get; set; }
}

public class RowObjects  
 {
    public int RowNumber { get; set; }
    public List<RowObject> RowObjectList { get; set; }

}

public class RowObject
{

    public int ColNum { get; set; }
    public int RowNum { get; set; }
    public string ColLetter { get; set; }
    public string rowValue { get; set; }
    public string CellValue { get; set; }
}

填充集合后,迭代子列表中每个对象的最有效和最佳方法是什么?比较它与另一个父类的最佳方法是什么?

-Thanks

1 个答案:

答案 0 :(得分:0)

你想比较什么? ExcelSchema班?您可以在该类上编写一个比较器方法,该方法遍历该集合并比较每个项目。这可能是唯一真正做到这一点的方法。对象可以不同,但​​项目集合相同吗?您可以创建项目的哈希值,并根据需要对其进行比较。

取决于您希望如何判断RowObject项目(确定相等的内容,ColNumColNum + RowNum?...)的平等程度,具体取决于& #34;等于&#34;你想要这些项目,你可以采用几种不同的方式...我绝对会在.Equals(RowObject)类中添加RowObject方法,并向{{1}添加Equals(ExcelSchema)方法} .class。你如何编码,取决于你想要判断这种平等的方式,取决于你。

它可以简单到创建ExcelSchema中所有项目的字符串连接,并将它们与列表中的每个项目进行比较,或者从列表中的所有项目中创建字符串并进行比较,您可以将其减少为字符串连接的哈希值。或者你可以抓住课堂上每个属性的第一个RowObject个字母,并进行比较。同样,所有这些都取决于平等程度或同一性&#34;你想要和比较你愿意花费的开销。