C# DataAdapter.Fill返回行数,但Rows.List为空

C# DataAdapter.Fill返回行数,但Rows.List为空,c#,sql-server,dataadapter,C#,Sql Server,Dataadapter,我真的很困惑。我在SQL Server中有一个表,其中有三列nvarchar(255)列和几行用于测试。以下代码正确返回列名和行数2,但Rows.List=null。如果使用reader.Read()我可以读取行中的数据,因此查询将返回数据。任何改变表中数据的查询,如插入到…中,都可以正常工作 DataTable results = new DataTable; int rowsAffected = 0; string connectionString = "S

我真的很困惑。我在SQL Server中有一个表,其中有三列
nvarchar(255)
列和几行用于测试。以下代码正确返回列名和行数2,但
Rows.List=null
。如果使用
reader.Read()
我可以读取行中的数据,因此查询将返回数据。任何改变表中数据的查询,如
插入到…
中,都可以正常工作

    DataTable results = new DataTable;
    int rowsAffected = 0;
    string connectionString = "Server=<serverName>;Database=<databaseName>;Integrated Security=SSPI";
    string query = "SELECT * FROM testTable";
    using (SqlConnection conn = new SqlConnection(connectionString))
    using (SqlCommand command = new SqlCommand(query, conn))
    using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command))
         rowsAffected = dataAdapter.Fill(results);
DataTable结果=新的DataTable;
int rowsAffected=0;
string connectionString=“服务器=;数据库=;集成安全性=SSPI”;
string query=“从测试表中选择*”;
使用(SqlConnection conn=newsqlconnection(connectionString))
使用(SqlCommand=newsqlcommand(查询,连接))
使用(SqlDataAdapter dataAdapter=newsqldataadapter(命令))
rowsAffected=dataAdapter.Fill(结果);

完成此操作后,
results.Rows.Count=2
正确,而
results.Rows.List=null
错误。为什么没有任何数据返回给我?

我不确定您要完成什么,但方法是1.
受保护的,因此您可能只在调试器中看到它的值,2.)始终返回
null
,因为这是反映的实现:

protected virtual ArrayList List => (ArrayList) null;
您已经在
results.Rows
中拥有了
DataRowCollection
,因此您可以在
foreach
中枚举它,或者通过它的索引访问s
DataRow
。如果您确实需要
列表
,您可以使用:

List<DataRow> rowList = results.AsEnumerable().ToList();
List rowList=results.AsEnumerable().ToList();

如果您想要一个
DataRow[]
请改用
ToArray

List
是受保护的成员,因此不确定如何访问它,也不知道为什么要访问它
.Rows
返回一个集合,您可以只执行
.Rows[rowNumber]
这很尴尬,我一直得到
Rows={}
并且我看到列名在list属性中,所以我假设
Rows.list
应该有我的数据。我想我以前的工作可能有输入错误,因为现在我看到的是
Rows=System.Data.DataRowCollection
。我想我已经改变了主意,可能是有些事情在起作用,但我没有意识到这一点。很抱歉问了这么愚蠢的问题!!!