有几种方法可以解决这个问题。
如果您不关心按列类型对项目进行分组,则此查询可以完成:
var query = from DataColumn col in stationTable.Columns
from DataRow row in stationTable.Rows
where col.ColumnName.StartsWith("B_")
select row[col.ColumnName];
但是,要维护分组,您可以使用如下查找:
var query = (from DataColumn col in stationTable.Columns
from DataRow row in stationTable.Rows
where col.ColumnName.StartsWith("B_")
select new { Row = row[col.ColumnName], col.ColumnName })
.ToLookup(o => o.ColumnName, o => o.Row);
foreach (var group in query)
{
Console.WriteLine("ColumnName: {0}", group.Key);
foreach (var item in group)
{
Console.WriteLine(item);
}
}
这两种方法的缺点是你最终会得到一个object
. 考虑到问题的动态性质,以强类型方式保留结果需要一些额外的工作。