Saya tahu kita dapat dengan mudah melakukan ini dengan loop sederhana, tetapi saya ingin mempertahankan LINQ / Predikat ini?
string[] columnNames = dt.Columns.?
or
string[] columnNames = from DataColumn dc in dt.Columns select dc.name;
Coba ini (sintaks metode LINQ):
string[] columnNames = dt.Columns.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToArray();
atau dalam sintaks Query LINQ:
string[] columnNames = (from dc in dt.Columns.Cast<DataColumn>()
select dc.ColumnName).ToArray();
Cast
diperlukan, karena Kolom berjenis DataColumnCollection yang merupakan a IEnumerable
, bukan IEnumerable<DataColumn>
. Bagian lainnya harus jelas.
string[] columnNames = dt.Columns.Cast<DataColumn>().Where(x => x.ColumnName != "ABC").Select(x => x.ColumnName).ToArray();
Menggunakan
sumber
using
pernyataan itu otomatis ditambahkan begitu sering, tidak pernah terpikir oleh saya untuk memeriksanya.Saya sarankan menggunakan metode ekstensi seperti itu:
Dan oleh karena itu:
Anda juga dapat menerapkan satu metode ekstensi lagi untuk
DataTable
kelas untuk mengurangi kode:Dan gunakan sebagai berikut:
sumber
sumber