【发布时间】:2013-08-04 12:32:04
【问题描述】:
我有一个如下所示的数据表
ID Country Supplier
515 DE A
515 CH A
515 FR A
516 DE B
516 FR B
517 DE C
517 IT C
我有一个List<string>,它包含动态数量的列名,例如,如果列表包含单个列:
Supplier
我想从这个表中生成一个List<DataTable> 或一个 DataSet,并根据该列表中的列名分隔表,所以在这种情况下,我只用 Supplier 列分隔,结果将是 3 个 DataTables如下所示
----------table 1--------
515 DE A
515 CH A
515 FR A
----------table 2--------
516 DE B
516 FR B
----------table 3--------
517 DE C
517 IT C
但如果列名的List<string> 包含例如以下内容:
Supplier
Country
结果将是 7 个数据表,每个数据表包含一行
----------table 1--------
515 DE A
----------table 2--------
515 CH A
----------table 3--------
515 FR A
----------table 4--------
516 DE B
----------table 5--------
516 FR B
----------table 6--------
517 DE C
----------table 7--------
517 IT C
另一个例子是,如果列名的List<string> 只包含Country 列,那么结果将是
----------table 1--------
515 DE A
516 DE B
517 DE C
----------table 2--------
515 CH A
----------table 3--------
515 FR A
516 FR B
----------table 4--------
517 IT C
我如何使用 linq 实现这一点,查询将根据列表中包含的列名是动态的,您能指导我吗?
我已经为 DataTable.Select 和 Select 不同的嵌套循环使用了一个动态字符串,但它看起来很复杂,我想知道是否有更有效的方法来实现这一点
【问题讨论】: