在列表中获取唯一索引?
简短的版本是这样的:我有一个数据库。我有一个C#列表,我用来与该数据库进行交互。程序启动后,将数据转储到列表中,程序结束并将其保存回数据库。在列表中获取唯一索引?
这里是我的问题,但我要确保我的列表中(ID)的一个属性始终是唯一的,当我创建和删除列表项。我在想也许列表可能有类似于SQL自动增量的东西?或者也许只是一个数字索引,哪个项目位于哪个位置?
AddedDependents.Add(new Dependent
{
IsSpouse = isSpouse,
Id = /*unique id/*
});
你可以只使用列表索引:
AddedDependents.Add(new Dependent
{
IsSpouse = isSpouse,
Id = AddedDependents.Count
});
然后Dependent
Id和列表索引相同,因此从列表中获取Dependent
变得微不足道。
正如评论所说,如果你很可能会删除列表中的元素,那么你不能只是得到通过相关的标识,就像AddedDependents[dependent.Id]
而是需要通过列表进行迭代:
AddedDependents.Where(d => d.Id == dependent.Id);
但是当你移除一个元素时会发生什么? – user844541 2012-08-09 16:54:21
这是我最初做的,但问题是这样的:如果我有3个条目与ID 1,2,3,我删除2,并创建一个新的,那一个也有ID 3,给我两个与id = 3. – proseidon 2012-08-09 16:54:30
诚然,在这种情况下删除元素是很麻烦的。你将无法只执行'AddedDependents [dependent.Id]',而是遍历列表来找到Id,这并不是那么糟糕。 – peacemaker 2012-08-09 16:55:08
如何生成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()
});
我的ID只是一个整数。 Guid如何工作? – proseidon 2012-08-09 16:52:49
列表已订购,并已建立索引。你可以在列表中使用他们所在的位置。 AddedDependents [0] ... etc – 2012-08-09 16:48:26
您的“保存到数据库”操作是否包含一个列表或一个项目?当你说'删除'时,它在数据库中是一个'软'或'硬'删除? – Channs 2012-08-09 16:49:06
直到列表完成,数据库才被触动,然后保存。所有的操作都在列表中完成,然后删除数据库并使用新的列表数据重新创建 – proseidon 2012-08-09 16:50:18