C# 遍历包含复杂对象的嵌套列表的最有效方法

C# 遍历包含复杂对象的嵌套列表的最有效方法,c#,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 L

我正在构建一个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; }
}
公共类ExcelSchema
{
公共字符串模式名{get;set;}
公共列表行对象{get;set;}
}
公共类行对象
{
公共整数行号{get;set;}
公共列表行对象列表{get;set;}
}
公共类行对象
{
public int ColNum{get;set;}
public int RowNum{get;set;}
公共字符串收集器{get;set;}
公共字符串行值{get;set;}
公共字符串CellValue{get;set;}
}
填充集合后,迭代子列表中的每个对象的最有效和最好的方法是什么?将其与另一个父类进行比较的最佳方法是什么


-谢谢

您想比较什么?ExcelSchema类?您可以在该类上编写一个比较器方法,迭代集合并比较每个项。这可能是唯一真正做到这一点的方法。对象可以不同,但项集合相同吗?您可以创建一个散列的项目,并比较平等,若你们想

根据您想要如何判断
RowObject
项的相等性(什么决定相等,
ColNum
ColNum
+
RowNum
?…)根据您想要的项的“相等”程度,您可以用几种不同的方式来处理它……我肯定会添加一个
相等(RowObject)
RowObject
类的
方法,以及
Equals(ExcelSchema)
类的
Equals(ExcelSchema)
方法。如何对其进行编码,同样取决于您想要如何判断相等性


它可以很简单,创建一个包含
RowObject
中所有项目的字符串连接,并将其与列表中的每个项目进行比较,或者从列表中的所有项目中创建一个字符串并进行比较,您可以将其简化为字符串连接的散列。或者,您可以获取每个项目的第一个
n
字母属性,并对其进行比较。同样,所有这些都取决于您想要的平等或“相同”程度以及您愿意花费的比较开销。

很难找到“最佳”值“当你没有陈述最终目标时的解决方案。最终目标是什么?用什么方式比较?对不起,我应该说得更清楚。。我正在用excel CVS文件中的单元格填充ExcelSchema对象。我的计划是用两个单独的CVS文件填充其中两个对象,并比较不同的单元格(RowObject)。如何比较它们?通过检查它们是否相等?如果是这样的话,你只需要创建一个散列并比较它们。我添加了一个答案,但我对它的彻底性没有真正的信心,尽管我试图涵盖大多数角度。很多都取决于你想比较什么,你想如何比较,以及你愿意牺牲多少开销。正如@MattRowland所说,您还没有真正说明您进行比较的真正目标。