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")