【发布时间】:2013-03-20 09:49:36
【问题描述】:
我有一个具有相同结构的 DataTables 数据集。我想从 SINGLE linq 查询中的这些表中获取单个 DataRows 集合
from sourceTab in ds.Tables.OfType<DataTable>()
select sourceTab
然后我需要从每个表中选择数据行并将它们组合成一个列表
【问题讨论】:
我有一个具有相同结构的 DataTables 数据集。我想从 SINGLE linq 查询中的这些表中获取单个 DataRows 集合
from sourceTab in ds.Tables.OfType<DataTable>()
select sourceTab
然后我需要从每个表中选择数据行并将它们组合成一个列表
【问题讨论】:
使用SelectMany 从每个表中选择所有行并将它们展平为一个序列:
from row in ds.Tables.Cast<DataTable>().SelectMany(t => t.AsEnumerable())
// filter, etc
select row
如果你只想要所有行,那么使用
ds.Tables.Cast<DataTable>().SelectMany(t => t.AsEnumerable())
【讨论】:
您不需要查询语法来执行此操作。简单的方法查询就好了:
var results = ds.Tables.Cast<DataTable>().SelectMany(t => t.AsEnumerable())
【讨论】:
试试Cast<T> 和SelectMany<T>
var r = ds.Tables.Cast<DataTable>().SelectMany(n => n.AsEnumerable())
【讨论】: