目前我在通过选择所有行但只有一些列来从DataTable中获取一些数据时遇到一些问题。
这里有一个更具描述性的例子:
| ID | FirstName | LastName | Age |
+----+-----------+----------+-----+
| 1 | Alice | Wannabe | 22 |
| 2 | Bob | Consumer | 27 |
| 3 | Carol | Detector | 25 |
所以我们从GUI得到的是IEnumerable<DataColumn> selectedColumns
,我们会找到两个元素( FirstName 和 LastName )。
现在我需要一些包含所有行的结果,但只包含上面两列(或所选列的任何其他列表)。
到目前为止,我已经在几个一维对象上使用了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选择行中的哪些列?
答案 0 :(得分:3)
你不需要Linq这样做:
string[] selectedColumns = new[] { "ID", "LastName" };
DataTable tableWithOnlySelectedColumns =
new DataView(table).ToTable(false, selectedColumns);
答案 1 :(得分:0)
您可以使用以下代码获得类似的输出 -
var result = Table.AsEnumerable().Select(row =>
new {
FirstName = row.ItemArray[Table.Columns["FirstName"].Ordinal],
LastName = row.ItemArray[Table.Columns["LastName"].Ordinal]
});