system.data.enumerablerowcollection to List,在运行时
本文关键字:运行时 data enumerablerowcollection to List system | 更新日期: 2023-09-27 17:56:29
List<string> values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<string>(ColumnName)).Distinct().ToList<string>();
我正在使用上面的查询从数据表中读取特定列的所有值。如果我想读取所有列,我必须处理所有情况
foreach (string ColumnName in AllColumns)
{
List<string> values_ofColumn = null;
if (MasterDataTableObject.Columns[ColumnName].DataType.Name.ToString() == "String")
{
values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<string>(fieldAttribute)).Distinct().ToList<string>();
}
if (MasterDataTableObject.Columns[ColumnName].DataType.Name.ToString() == "Double")
{
values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<double>(fieldAttribute).ToString()).Distinct().ToList<string>();
}
if (MasterDataTableObject.Columns[ColumnName].DataType.Name.ToString() == "DateTime")
{
values_ofColumn = MasterDataTableObject.AsEnumerable().Select(s => s.Field<DateTime>(fieldAttribute).ToString("MM/dd/yyyy HH:mm:ss")).Distinct().ToList<string>();
}
}
为什么我添加了很多 if else 语句是...我无法用Field<T>
题MasterDataTableObject.Columns[ColumnName].DataType
我知道,这是编译时映射。
有什么方法可以摆脱使用 如果不是
谢谢
foreach (string ColumnName in AllColumns)
{
List<string> values_ofColumn = null;
var coll = (
from row in MasterDataTableObject.AsEnumerable()
select row[ColumnName]
);
values_ofColumn = coll.Select(row => row.ToString()).Distinct().ToList<string>();
}