Ich weiß, dass wir dies leicht durch eine einfache Schleife tun können, aber ich möchte dieses LINQ / Prädikat fortsetzen?
string[] columnNames = dt.Columns.?
or
string[] columnNames = from DataColumn dc in dt.Columns select dc.name;
Versuchen Sie Folgendes (LINQ-Methodensyntax):
string[] columnNames = dt.Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
oder in der LINQ Query-Syntax:
string[] columnNames = (from dc in dt.Columns.Cast<DataColumn>()
select dc.ColumnName).ToArray();
Cast
ist erforderlich, da Columns vom Typ DataColumnCollection ist IEnumerable
, was a ist , nicht IEnumerable<DataColumn>
. Die anderen Teile sollten offensichtlich sein.
string[] columnNames = dt.Columns.Cast<DataColumn>().Where(x => x.ColumnName != "ABC").Select(x => x.ColumnName).ToArray();
Verwenden
quelle
using
Aussage wird automatisch so oft hinzugefügt, dass es mir nie in den Sinn gekommen ist, danach zu suchen.Ich würde vorschlagen, eine solche Erweiterungsmethode zu verwenden:
Und deshalb:
Sie können auch eine weitere Erweiterungsmethode für die
DataTable
Klasse implementieren , um den Code zu reduzieren:Und benutze es wie folgt:
quelle
quelle