【发布时间】:2021-05-05 04:12:29
【问题描述】:
我试图阻止在列表中添加 C# 中已存在的项目。下面的代码循环遍历数据表行。
如您所见, rows 的类型为 List<CubeReportRow>
数据表行确实包含重复项。我需要检查数据表中的 rowName 是否已经在 List<CubeReportRow> 类型的行对象中。请查看我在 foreach 循环中设置的条件。当我尝试按行名检查时,它说无法将字符串转换为 CubeReportRow 类型。如果我检查 if (!rows.Contains(row[0])),没有编译错误,但我不工作。如何检查它是否存在于 rows 集合中。
类 CubeReportRow
public class CubeReportRow
{
public string RowName { get; set; }
public string RowParagraph { get; set; }
public int ReportSection { get; set; }
}
C#方法
public virtual IList<CubeReportRow> TransformResults(CubeReport report,DataTable dataTable)
{
if (dataTable.Rows.Count == 0 || dataTable.Columns.Count == 0)
return new List<CubeReportRow>();
var rows = new List<CubeReportRow>();
var columns = columnTransformer.GetColumns(dataTable);
foreach (DataRow row in dataTable.Rows)
{
var rowName = row[0].ToString();
if (!rows.Contains(rowName))
{
var values =
cubeReportValueFactory.CreateCubeReportValuesForRow(dataTable, row, rowName, columns, report);
var reportRow = new CubeReportRow(row[3].ToString(), row[2].ToString(), row[1].ToString(), values);
rows.Add(reportRow);
}
}
return rows;
}
【问题讨论】:
-
查看
IEqualityComparer<T>以获得您的CubeReportRow。具有相同的RowName属性值是否具有 Equals 的语义
标签: c#