2012-08-09 135 views
0

簡短的版本是這樣的:我有一個數據庫。我有一個C#列表,我用來與該數據庫進行交互。程序啓動後,將數據轉儲到列表中,程序結束並將其保存回數據庫。在列表中獲取唯一索引?

這裏是我的問題,但我要確保我的列表中(ID)的一個屬性始終是唯一的,當我創建和刪除列表項。我在想也許列表可能有類似於SQL自動增量的東西?或者也許只是一個數字索引,哪個項目位於哪個位置?

AddedDependents.Add(new Dependent 
        { 
         IsSpouse = isSpouse, 
         Id = /*unique id/* 
        }); 
+0

列表已訂購,並已建立索引。你可以在列表中使用他們所在的位置。 AddedDependents [0] ... etc – 2012-08-09 16:48:26

+0

您的「保存到數據庫」操作是否包含一個列表或一個項目?當你說'刪除'時,它在數據庫中是一個'軟'或'硬'刪除? – Channs 2012-08-09 16:49:06

+0

直到列表完成,數據庫才被觸動,然後保存。所有的操作都在列表中完成,然後刪除數據庫並使用新的列表數據重新創建 – proseidon 2012-08-09 16:50:18

回答

0

你可以只使用列表索引:

AddedDependents.Add(new Dependent 
       { 
        IsSpouse = isSpouse, 
        Id = AddedDependents.Count 
       }); 

然後Dependent Id和列表索引相同,因此從列表中獲取Dependent變得微不足道。

正如評論所說,如果你很可能會刪除列表中的元素,那麼你不能只是得到通過相關的標識,就像AddedDependents[dependent.Id]而是需要通過列表進行迭代:

AddedDependents.Where(d => d.Id == dependent.Id); 
+0

但是當你移除一個元素時會發生什麼? – user844541 2012-08-09 16:54:21

+0

這是我最初做的,但問題是這樣的:如果我有3個條目與ID 1,2,3,我刪除2,並創建一個新的,那一個也有ID 3,給我兩個與id = 3. – proseidon 2012-08-09 16:54:30

+0

誠然,在這種情況下刪除元素是很麻煩的。你將無法只執行'AddedDependents [dependent.Id]',而是遍歷列表來找到Id,這並不是那麼糟糕。 – peacemaker 2012-08-09 16:55:08

0

如何生成Guid

E.g.

AddedDependents.Add(
    new Dependent 
    { 
     IsSpouse = isSpouse, 
     Id = Guid.NewGuid().ToString("N") 
    }); 

因此意味着你的「ID」是一個字符串,我無法從你的問題看,這是否是可以或不可以。

另外,這樣做沒有使它成爲一個字符串,但希望這是一個Guid類型,如:

AddedDependents.Add(
    new Dependent 
    { 
     IsSpouse = isSpouse, 
     Id = Guid.NewGuid() 
    }); 
+1

我的ID只是一個整數。 Guid如何工作? – proseidon 2012-08-09 16:52:49