2012-03-26 15 views
0

如何从foreach循环中的字典中调用数据集?在下面的代码中.Rows不存在,并且数据集在foreach循环中为null。从foreach循环中的字典中调用数据集

public class dictWITHdataset 
{ 
    public dictWITHdataset() 
    { 
     DataSets = new Dictionary<string, DataSet>(); 
    } 

    public IDictionary<string, DataSet> DataSets { get; private set; } 

    public DataSet readrows(DataSet dataset) 
    { 
     string query = "SELECT * FROM test.dbo.test"; 
     SqlDataAdapter adapter = new SqlDataAdapter(); 
     adapter.SelectCommand = new SqlCommand(query, conn); 
     adapter.Fill(dataset); 
     return dataset; 
    } 
} 

后来我尝试从一个foreach循环字典调用数据集,但它声称行确实存在,其空。

dictWITHdataset dict = new dictWITHdataset(); 
DataSet data = new DataSet(); 
dict.DataSets("Dictionary1",data) //not sure if correct way to call data set 
foreach (System.Data.DataRow row in dict.DataSets["Dictionary1"].Rows) 
{ 
    @:row["id"] + " " + row["name"]; 
} 
+0

您还没有在代码中调用重读。 – daryal 2012-03-26 14:36:54

回答

2

你已经忘了打电话给dict.readrows调用,因此只增加了一个空的数据集。另外,重读不需要参数,你可以在函数中创建它。

dictWITHdataset dict = new dictWITHdataset(); 
DataSet data = new DataSet(); 
dict.DataSets("Dictionary1",dict.readrows(data)) 
foreach (System.Data.DataRow row in dict.DataSets["Dictionary1"].Rows) 
{ 
    @:row["id"] + " " + row["name"]; 
} 
+0

它仍然说行不存在。你能给我一个参数的例子作为一个函数吗?我仍然没有看到我要为每个数据集指定SQL查询的位置。 – tdjfdjdj 2012-03-26 15:04:11

+0

你想让你的字典将查询字符串作为关键字并将结果数据集作为值吗? – daryal 2012-03-26 15:09:35

+0

是的。如果可能的话。 – tdjfdjdj 2012-03-26 15:10:25