2013-07-29 52 views
-2

我只想从我的SQL查询中哈希集的唯一值。哈希集没有返回唯一值

代码存储专用值:

var id = new HashSet<String>(); 
id.Add("A"); 
id.Add("A"); 
id.Add("B"); 

现在我想的唯一值传递到一个SQL查询,并找到匹配的唯一ID的记录。

我这样做的方式如下。

DataTable da2 = new DataTable(); 
foreach(var grp in id) 
{ 
    string uid = grp; 
    string s3 = "Select id, fname, lname, dob from ifile where id= @uid"; 
    SqlCommand cmd1 = new SqlCommand(s3, con); 
    cmd1.Parameters.AddWithValue("@id", uid); 
    con.Open(); 
    da2.Load(cmd1.ExecuteReader()); 
    con.Close(); 
} 
Gridview1.DataSource=da2; 

当我执行此查询时,它也会返回重复记录。

此外,以前我只是显示唯一的ID和它为我使用以下方法,它工作正常。

GridView1.DataSource = id.Select(id1 => new { id1 }).ToList(); 

因为我想显示更多的属性,我不能使用上面的方法。

有人可以帮助我吗?

谢谢。

+6

那你为什么要在数据库中存储重复的ID呢? –

+0

你的代码示例似乎并不相关?它看起来好像是在数据库中存储重复条目。我不理解问题? –

+0

如果您有'Hashset'将其更改为HashSet,您的第4行代码将不会编译我将发布代码以便自动停止重复项的添加 – MethodMan

回答

3

如果存在多个具有相同ID的记录,那么您可能只是想将您的SQL语句修改为SELECT DISTINCTSELECT TOP 1。也就是说,在数据库中有多个具有相同ID的记录是很麻烦的。更好的是把这个专栏命名为别的。

+0

感谢Dax Fohl – Huzaifa