2013-07-29 113 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