【发布时间】:2011-01-24 22:11:20
【问题描述】:
目前我在通过选择所有行(但只选择一些列)从 DataTable 中获取一些数据时遇到一些问题。
为了更具描述性,这里是一个小例子:
样本数据
| ID | FirstName | LastName | Age |
+----+-----------+----------+-----+
| 1 | Alice | Wannabe | 22 |
| 2 | Bob | Consumer | 27 |
| 3 | Carol | Detector | 25 |
我有什么
所以我们从 GUI 中得到的是 IEnumerable<DataColumn> selectedColumns,我们会在其中找到两个元素(FirstName 和 LastName)。
现在我需要一些包含所有行的结果,但只包含上述两列(或任何其他 list 选定列)。
到目前为止,我已经在几个一维对象上使用了 LINQ,但是这个二维对象让我有点头疼。
// The hard-coded way
Table.AsEnumerable().Select(row => new { FirstName = row[1], LastName = row[2] });
// The flexible way
Table.AsEnumerable().Select(row => row ???)
但是我现在怎么说,应该使用我的 selectedColumns 选择行中的哪些列?
【问题讨论】:
-
硬编码解决方案到底有什么问题?
-
硬编码的方式没有问题。我只是不需要硬编码,因为我喜欢在运行时通过
IEnumerable<DataColumn>设置想要的列。