C# 如何从数据集中的DataTable存储中检索数据并将其存储在数组中?

C# 如何从数据集中的DataTable存储中检索数据并将其存储在数组中?,c#,datatable,dataset,C#,Datatable,Dataset,我试图从数据集中的DataTable中检索数据并将其存储到数组中 之前,我只是使用以下代码从DataTable检索数据并将其存储到数组中 var stringArr = DtTable.AsEnumerable().Select(r => r.Field<string>("ExampleId")).ToArray(); var stringArr=DtTable.AsEnumerable().Select(r=>r.Field(“ExampleId”).ToArray();

我试图从数据集中的DataTable中检索数据并将其存储到数组中

之前,我只是使用以下代码从DataTable检索数据并将其存储到数组中

var stringArr = DtTable.AsEnumerable().Select(r => r.Field<string>("ExampleId")).ToArray();
var stringArr=DtTable.AsEnumerable().Select(r=>r.Field(“ExampleId”).ToArray();
它成功了。所以我决定修改它,以便像这样访问数据集

var stringArr = DtSet.Tables["Results"].TableName.AsEnumerable().Select(r => r.Field<string>("ExampleId")).ToArray();
var stringArr=DtSet.Tables[“Results”].TableName.AsEnumerable().Select(r=>r.Field(“ExampleId”).ToArray();
我现在收到以下错误消息,不确定如何修复

错误CS1929“char”不包含“Field”的定义,并且最佳扩展方法重载“DataRowExtensions.Field(DataRow,string)”需要“DataRow”类型的接收器


问题是您在链中添加了
TableName

基本上,您要求在一个
IEnumerable
(返回一个
IEnumerable
)中打开
TableName
,并且对于您试图调用的表名字符串的每个
char
。字段,它当然不存在

你需要写:


//注意表名被删除
var stringArr=DtSet.Tables[“Results”].AsEnumerable().Select(r=>r.Field(“ExampleId”).ToArray();

从链中删除
TableName
将返回所需的
IEnumerable

数据表(根本不需要存储在数据集中)是一个完全可用的容器-为什么要移动它?TableName不应该在链中。它以字符串形式返回表的名称。枚举迭代charsYeah,我想你会发现列表更容易使用。但是,另一个问题。。。在第一个示例中,
DtTable
是否与第二个示例中的
DtSet.Tables[“Results”]
相同?在第二个示例中,如果取出
.TableName
,会发生什么?是否能够设置并点击断点?我很想知道这一行给了你什么:
var myTable=DtSet.Tables[“Results”]
它应该为您提供一个与
DtTable
相同的数据表。如果没有,则说明
DtSet.Tables[“Results”]
有问题。假设DtSet.Tables[“Results”]是有效的,Gwinn下面的回答应该是正确的答案。请参见OP下的注释。我也建议了这一点,但OP说他得到了一个空集。是的,我现在在打印数据时得到了一个空字符串foreach(stringArr中的var项){Console.WriteLine(stringArr);}`请参阅我最近的评论。这应该是正确的答案。如果不是,那么
DtSet.Tables[“Results”]
将为您提供一个空数据表。我以为问题是关于编译器错误的,我在编写答案时没有看到注释@pennyBoy您确定您的表“Results”包含任何数据并且列“ExampleId”实际上有任何值吗?我将在另一篇文章中问另一个问题。但是,基本上我有两门课。在类A中,我创建了3个数据表,并将它们存储到传递给类B的数据集中。在类B中,我将数据集从A复制到B中的新数据集中。然后我尝试检索这些表,将它们存储在数组中并打印出结果。