2014-11-22 82 views
0

我想将我查询的内容拉入数组中。C#将MySQL结果拉入数组

SELECT * FROM `x` 

可能有1结果或1,000个结果。这些列会有所不同,我的意思是,我宁愿模糊,也不愿为每个查询编写特定的解释器,我宁愿使用函数来确定列名。

那么我真的想要什么?

<?php 
    $results = mysql::query("SELECT * FROM x"); 
    $holding = array(); 

    //Now we get the results. 
    while ($row = mysql_fetch_assoc($results)) $holding[] = $row; 
?> 

很明显,这不是C#,但我想要的等效。我想把所有的结果保留在数组中,这样我就可以调用[0] [“Column”];

我的C#代码如下。

  if (connected) 
     { 
      MySqlCommand cmd = new MySqlCommand(query, conn); 
      MySqlDataReader reader = cmd.ExecuteReader(); 

      while (reader.Read()){ 
       //The problem is here, I don't know how to add them to a list/array retaining column names etc.. 

      } 
     } 

回答

3

如果你想的那么通过使用Linq to DataTable让所有行到一个数组,你可以这样做:

var dt = new DataTable(); 
dt.Load(cmd.ExecuteReader()); 
var rows = dt.AsEnumerable().ToArray(); 

然后你的DataRows一个数组,你可以得到一个特定列的值例如使用DataRow的索引器:

// value of the id column of first row 
var value = rows[0]["id"]; 
+1

谢谢,正是我所需要的。花了一段时间才实施,因为返回的方法是通过另一种方法。谢谢! – 2014-11-22 20:47:53