我想使用 Linq 通过 ColumnName 动态选择 DataTable 列,但是要使用 Field<> 我必须显式地将它们强制转换或将所有内容装箱到一个对象中,这效率不高。
我试过了:
string[] colsNames = new[] { "Colum1", "Colum2" };
DataTable dt = StoredProcedure().Tables[0];
var cols = dt.Columns.Cast<DataColumn>().Where(c => cols.Contains(c.ColumnName));
if (cols.Any())
{
dt.AsEnumerable().Select(r => string.Join(":", cols.Select(c => r.Field<c.DataType>(c.ColumnName))))
}
但这给我一个错误The type or namespace name 'c' could not be found
我如何转换typeof(decimal)
为Field<decimal>("Column1")
例如?