2012-02-04 65 views
0

我有一个IDS列表1,2,4,6在我的列表(C#)我需要做的是从我的表提取对应于这些IDS的数据连接通过比较来自列表的数据从sql表中提取数据

enter image description here

我的代码列表如下:

string str = "SELECT id1 FROM [Example] WHERE id2 = '1' UNION SELECT id2 FROM Example WHERE id1 = '1'"; 
      ds = new DataSet(str); 
      da = new SqlDataAdapter(str, con); 
      da.Fill(ds); 
      //GridView1.DataSource = ds; 
      //GridView1.DataBind(); 
      DataTable dtDetails = ds.Tables[0]; 
      List<int> lst = 
           (from dr in dtDetails.AsEnumerable() 
           select Convert.ToInt32(dr["id1"])).ToList<int>(); 

什么上面的代码确实是列表检索没有的2 3 4 6

我想要做的是检索id2对应于这些没有的是这样吗?

编辑:

string str = "SELECT id1 FROM [Example] WHERE id2 = '1' UNION SELECT id2 FROM Example WHERE id1 = '1'"; 
     ds = new DataSet(str); 
     da = new SqlDataAdapter(str, con); 
     da.Fill(ds); 
     DataTable dtDetails = ds.Tables[0]; 
     List<int> lst = 
          (from dr in dtDetails.AsEnumerable() 
          select Convert.ToInt32(dr["id1"])).ToList<int>(); 

     foreach (int prime in lst) // Loop through List with foreach 
     { 

      str1 = " SELECT id2 FROM [Connections] where id2= '"+prime+"'"; 
      SqlCommand cmd1 = new SqlCommand(str1, con); 
      cmd1.ExecuteNonQuery(); 
      DataSet ds1 = new DataSet(); 
      SqlDataAdapter da1 = new SqlDataAdapter(str1, con); 
      da1.Fill(ds1); 
      GridView1.DataSource = ds1; 
      GridView1.DataBind(); 

     } 

我的GridView不显示任何

+0

对不起,我感到困惑;你想要达到什么目的? – CarneyCode 2012-02-04 10:10:18

+0

检查编辑=) – vini 2012-02-04 10:28:21

回答

-1

试试这个列表建构列表!

SELECT ID2 FROM例WHERE ID2 IN(SELECT ID1 FROM [实施例] WHERE ID2 = '1' UNION SELECT ID2 FROM示例,其中ID1 = '1')

-1

你可以做的是使用作为你的选择的一部分。因此,发送到SQL Server的select语句可能是:

SELECT * FROM [连接],其中ID1 IN(1,2,4,6)

在psudo代码,这将是:

字符串列表=“1,2,4,6”; string str1 =“SELECT * FROM [Connections] where id1 IN(”+ list +“)”;

在你的代码

当然,你想从你的ID

+0

它仍然给我同样的结果,因为它只显示数据对应'6' – vini 2012-02-05 03:35:31

+0

无论如何,我得到了我的答案我想要的结果 – vini 2012-02-05 17:36:58