【发布时间】:2010-07-15 21:04:32
【问题描述】:
我有行集合和列名作为 list ,有没有办法使用委托将所有列名传递给单行并将值作为集合返回? 或者有没有其他最好的方法来完成这个?
【问题讨论】:
我有行集合和列名作为 list ,有没有办法使用委托将所有列名传递给单行并将值作为集合返回? 或者有没有其他最好的方法来完成这个?
【问题讨论】:
你是说你有一个DataRow 并且你想要每一列中的值?
那么你只需要这个:
object[] values = row.ItemArray;
如果您只想要 特定 列中的值,我建议您使用一些 LINQ 魔法以 Dictionary<string, object> 的形式将它们提供给您:
IEnumerable<string> columnNames = GetDesiredColumnNames();
var values = columnNames
.ToDictionary(name => name, name => row[name]);
当然,您也可以使用相同的 LINQ 魔法为 所有 列获取 Dictionary<string, object>(如果 object[] 的描述性不足以满足您的喜好):
IEnumerable<string> columnNames = row.Table.Columns
.Cast<DataColumn>()
.Select(column => column.ColumnName);
var values = columnNames
.ToDictionary(name => name, name => row[name]);
【讨论】: