我在数据集中有多个表,所以现在我必须从数据表中获取所有列名。尽管我使用 for Loops 来获取列名,但是否可以通过 Linq 来完成。
问问题
3841 次
3 回答
3
没有循环的 LINQ
var columnNames = (from table in dataSet.Tables.OfType<DataTable>()
from column in table.Columns.OfType<DataColumn>()
select column.ColumnName).ToList();
于 2013-04-26T13:39:30.873 回答
2
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
属性转换为IEnumerable<T>
可在 Linq 查询中使用的类型。
于 2013-04-26T13:38:26.383 回答
0
尝试这个:
List<string> result = new List<string>();
foreach (DataTable item in dataSet.Tables)
{
result.AddRange(item.Columns.Cast<DataColumn>().Select(i => i.ColumnName).ToList());
}
于 2013-04-26T13:31:44.523 回答