我正在尝试编写一个函数,该函数采用通用List / Enumerable并将DataRow添加到现有DataTable,但仅用于自定义列 .
public void AddGridRow(IEnumerable rowData, params String[] columnNames)
{
HashSet columnsHashSet = new HashSet(columnNames);
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
foreach (T item in rowData)
{
foreach (PropertyDescriptor prop in properties)
{
foreach (DataColumn column in _dataGridTable.Columns)
{
DataRow newRow = _dataGridTable.NewRow();
if (columnsHashSet.Contains(prop.Name))
{
newRow[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
_dataGridTable.Rows.Add(newRow); // _dataGridTable is my existing DataTable
break;
}
}
}
}
}
现在问题是它的行为不正确,假设我必须在4列(columnNames)中添加1行,它每列添加1行 . 还有很多foreach循环 . 我该如何纠正这一点,如果可能的话,优化它 .