从数据表中获取一个ID(值)数组

4

我有一个包含50行的数据表,其中有一个ID列。我想要获取一个只包含ID的数组,例如:

string [] IDs = (from row in DataTable.Rows
                select row["ID"].toString()).ToArray();

有没有办法做到这一点。我总是会收到错误信息:“无法找到查询的实现...”


1
为什么止步于此呢,你这个调皮鬼...告诉我们完整的错误信息。 - Hogan
1
那个小写的 toString() 只是一个拼写错误,不是吗? - M4N
@Man,是的,打错了。我手写了这段代码。 - Robert
2个回答

5

通过添加对System.Data.DataSetExtensions的引用以及using System.Data;,使用DataTableExtensions.AsEnumerable方法。然后您应该能够使用以下查询:

var query = from row in datatable.AsEnumerable()
            select row["ID"].ToString();
string[] ids = query.ToArray();

如果你真的需要一个数组,你可以使用上面的最后一行代码,或者将查询语句括在括号中,并像最初那样调用ToArray()。我通常不喜欢后一种方法。
用流畅语法写就是:
string[] ids = datatable.AsEnumerable()
                        .Select(row => row["ID"].ToString())
                        .ToArray();

我尝试了一下,出现了“System.Data.DataTable”不包含“AsEnumerable”的定义,也没有扩展方法“AsEnumerable”。我需要引用什么吗? - Robert
1
@Robert 添加对 System.Data.DataSetExtensions 的引用,并通过 using System.Data; 添加 System.Data 命名空间,因为 DataTable 的 AsEnumerable 方法与通常的方法不同。 - Ahmad Mageed

0

有没有办法将列表数据表选择为客户对象数组。 假设所有列都将相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接