2011-11-06 314 views
0

我有一個非用戶輸入(無數據庫)數據填充的非類型數據集。沒有主鍵列(到目前爲止,我的數據不需要主鍵)!有沒有什麼辦法可以避免「蠻力」,如果我想檢查新的行用戶是否試圖插入已存在於我的DataTable?我應該如何執行該檢查?如何檢查DataTable是否包含DataRow?

回答

2

您可以手動創建獨特constraints你的DataTable:

DataTable custTable = custDS.Tables["Customers"]; 
UniqueConstraint custUnique = new UniqueConstraint(new DataColumn[] 
    {custTable.Columns["CustomerID"], 
    custTable.Columns["CompanyName"]}); 
custDS.Tables["Customers"].Constraints.Add(custUnique); 

在這個例子中,你會得到(ConstraintException類型的)一個例外,如果你嘗試將行添加到其中CustomerIDCompanyName是另一行的重複使用相同的CustomerIDCompanyName表。

我只想讓DataTable在內部爲您檢查這些事情 - 沒有意義重新發明輪子。至於如何它(它是否有效),將不得不爲你做一個練習。

+0

就是這樣! TNX! – guest86

0

你可以做的是使用DataView。 Dataview允許你在DataView的數據中使用where子句。

檢查它的方式。

+0

我不認爲我明白你的答案......我已經填寫的數據表,我只是想檢查,如果新行是要被添加有完全相同的數據與其他行已經存在於數據表中。 – guest86

+0

對不起,我誤解了。更正了我的答案。 – Haedrian

0

來檢查任何重複嘗試

if (table.Rows.Contain(PriKeyTypeValue)) /*See if a Primary Key Value is in 
the table already */ 
    continue; 
else 
    table.Row.Add(value1, value2, value3); 

如果您希望能夠插入重複行,但不希望有甩建立主鍵作爲一個獨特的自我遞增的整數,那麼一個異常您可以根據感覺,而無需檢查,看看錶包含value.you可以設定像下面的主鍵值中插入多個副本....

DataTable table = new DataTable(); 

table.Columns.Add("Column", typeof(int)); 

DataColumn column = table.Columns["Column"]; 
column.Unique = true; 
column.AutoIncrement = true; 
column.AutoIncrementStep = 1; //change these to whatever works for you 
column.AutoIncrementSeed = 1; 
table.PrimaryKey = new DataColumn[] { column }; 
0

很多,很多簡單的方法:

datatable.Columns.Contais("ColumnName")