【发布时间】:2015-06-18 11:07:03
【问题描述】:
我有一个包含 Bool(bit) 列的数据表。
a b
------ ------
1 10
0 20
1 30
0 20
1 10
我希望根据该值(a 列)将其拆分为 2 个可独立排序的数据表
我看了一下,发现了一个老问题:
Split a DataTable into 2 or more DataTables based on Column value
这给了这个:
List<DataTable> result = myDataTable.AsEnumerable()
.GroupBy(row => row.Field<Boolean>("a"))
.Select(g => g.CopyToDataTable())
.ToList();
但结果不是我可以使用 result[0] 和 result[1] 引用的数据表列表,就像我预期的那样。
当我点击result[1] 时,我得到:
"索引超出范围。必须为非负数且小于大小 的集合。参数名称:索引"
我想添加一条评论来询问,但该主题已超过 2 年,恐怕我不会得到回复。
任何人都可以建议一种方法来使用此代码或新鲜的东西来实现我需要的东西吗?
【问题讨论】:
-
尚不清楚为什么您展示的方法不起作用。结果是
List<DataTable>。所以第一个表是result[0],第二个表是result[1]。它永远不会包含超过两个表。 -
您的意思是表的顺序不正确 - 您可以订购 linq 查询。
-
我的意思是当我尝试访问结果[0]时,我得到了预期的缩短的结果列表。当我点击结果 [1] 时,我得到“索引超出范围。必须为非负数且小于集合的大小。参数名称:索引”
-
@Spitfire2k6:只有当列表仅包含一个表并且行具有所有相同的列值时才会出现该异常。