是否有更完善的方法将Datable的ColumnNames强制转换为列表,这是我在c#中使用的其他方法?

问题描述

@H_502_1@string tablename = comboBox1.SelectedItem.ToString();
string constring = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + _filenamelbl.Text;
dt = new DataTable();
using (OleDbConnection con = new OleDbConnection(constring))
{
    using (OleDbDataAdapter da = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]",tablename),con))
    {
        da.Fill(dt);
    }
}
List<string> fields = new List<string>();
foreach (DataColumn v in dt.Columns)
    fields.Add(v.ColumnName);

解决方法

您可以使用Linq获取列名:

var fields = dt.Columns.OfType<DataColumn>().Select(c => c.ColumnName).ToList();

这使用OfType<T>将列转换为可编号集合(DataColumn),然后应用Select()获取列名称。