如何通过LINQ从数据集中的多个表中获取所有列的名称
本文关键字:获取 LINQ 何通过 数据 数据集 集中 | 更新日期: 2023-09-27 18:10:57
我在数据集中有多个表,所以现在我必须从数据表中获得所有列的名称。是否有可能通过Linq,虽然我使用循环来获取列名。
LINQ无循环
var columnNames = (from table in dataSet.Tables.OfType<DataTable>()
from column in table.Columns.OfType<DataColumn>()
select column.ColumnName).ToList();
var columns = dataSet.Tables
.Cast<DataTable>()
.SelectMany(t=>t.Columns
.Cast<DataColumn>()
.Select(c=>c.ColumnName));
或者如果还需要表名
var columns = dataSet.Tables
.Cast<DataTable>()
.SelectMany(t=>t.Columns
.Cast<DataColumn>()
.Select(c=> new {
t.TableName,
c.ColumnName
}
)
);
Cast<>
是将非泛型的IEnumerable
、Tables
和Columns
属性转换为可用于Linq查询的IEnumerable<T>
类型所必需的。
试试这个:
List<string> result = new List<string>();
foreach (DataTable item in dataSet.Tables)
{
result.AddRange(item.Columns.Cast<DataColumn>().Select(i => i.ColumnName).ToList());
}