2013-09-24 16 views
1

一个人如何在查询的结果集通过每行一个C#列出一个人如何在查询的结果集通过每个行AC#列表

到目前为止,我在做的尝试是结果集传递给一个SqlDataReader然后在C#列表中迭代其内容。

我使用的列表抽样基准在此链接: How to return SqlDataReader in C# WCF?

//查询

 string comm = "SELECT " + 
         "Name" + 
         "Local" + 
         "Employee_Number" + 
         "Employee_Name" + 
         "FROM t_temp_list"; 

     SqlCommand sel = new SqlCommand(comm,con); 

//的DataReader
SqlDataReader的RDR;

 try 
     { 
      con.Open(); 
      rdr= sel.ExecuteReader(); 
      pullShuffledData(rdr); 
     } 
     catch(SqlException ex) 
     { 
      Alert.Show("Error:"+ ex); 
     } 

//列表的方法

public void pullShuffledData(SqlDataReader rdr) 
    { 
     List<shuffleDataList> callList = new List<shuffleDataList>(); 
     //callList.Add 

     if (rdr != null) 
     { 
      if (rdr.HasRows) 
      { 
       while (rdr.Read()) 
       { 
        //return sqlReader[0].ToString(); 
        callList.Add(rdr[0].ToString()); 
       } 
       sqlConn.Close(); 
      } 
      else 
      { 
       return null; 
      } 
     } 
     return callList; 

内,但我不知道如何输出每个结果集的行插入变量列表的迭代中。任何帮助深表感谢。谢谢你在前进

+0

为什么不这项工作 - 你遇到了什么错误 ? 'shuffleDataList'的结构是什么? – bhs

+0

Vishnu, 尝试使用'yield'关键字,如以下文章中所述 http://stackoverflow.com/questions/10252531/returning-a-sqldatareader – 2013-09-24 10:04:00

+0

@bhs我想实现的是每个结果集行传递列表迭代中的变量或将行值传递给List变量,以便可以在pullShuffledData方法之外访问它。我在C#中非常新,并且还不熟悉C#中的Lists。谢谢 – vishnu

回答

1

假设shuffleDataList是定义为类:

class shuffleDataList 
{ 
    public string Name {get;set;} 
    public string Local {get;set;} 
    public string Employee_Number {get;set;} 
    public string Employee_Name {get;set;} 
} 

然后,您可以用shuffleDataList对象来填充您的列表如下:

public List<shuffleDataList> pullShuffledData(SqlDataReader rdr) 
{ 
    List<shuffleDataList> callList = new List<shuffleDataList>(); 

    if (rdr != null) 
    { 
     if (rdr.HasRows) 
     { 
      while (rdr.Read()) 
      { 
       callList.Add(new shuffleDataList() 
        { 
         Name = rdr.GetString(0), //Name column 
         Local = rdr.GetString(1), //Local column 
         Employee_Number = rdr.GetString(2), //Employee_Number column 
         Employee_Name = rdr.GetString(3), //Employee_Name column 
        }); 
      } 
      sqlConn.Close(); 
     } 
     else 
     { 
      return null; 
     } 
    } 
    return callList; 
} 
+0

谢谢。将试试这个,看看它是如何工作的。 – vishnu

相关问题