Sé que podemos hacer esto fácilmente con un simple bucle, pero quiero persuadir este LINQ / Predicate.
string[] columnNames = dt.Columns.?
or
string[] columnNames = from DataColumn dc in dt.Columns select dc.name;
Pruebe esto (sintaxis del método LINQ):
string[] columnNames = dt.Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
o en la sintaxis de consulta LINQ:
string[] columnNames = (from dc in dt.Columns.Cast<DataColumn>()
select dc.ColumnName).ToArray();
Cast
es obligatorio, porque Columns es de tipo DataColumnCollection IEnumerable
, que no es IEnumerable<DataColumn>
. Las otras partes deberían ser obvias.
string[] columnNames = dt.Columns.Cast<DataColumn>().Where(x => x.ColumnName != "ABC").Select(x => x.ColumnName).ToArray();
Utilizar
fuente
using
declaración se agrega automáticamente con tanta frecuencia que nunca se me ocurrió verificarla.Sugeriría usar dicho método de extensión:
Y por lo tanto:
También puede implementar un método de extensión más para que la
DataTable
clase reduzca el código:Y utilícelo de la siguiente manera:
fuente
fuente