C# 在列表中获取唯一索引?
简短而简单的版本是:我有一个数据库。我有一个c#列表,用于与该数据库交互。程序启动,将数据转储到列表中,程序结束,将其保存回数据库 但我的问题是:在创建和删除列表项时,我需要确保列表(id)中的一个属性始终是唯一的。我在想一个列表可能有一些类似于SQL自动增量的东西?或者仅仅是哪个项目在哪个位置的数字索引C# 在列表中获取唯一索引?,c#,C#,简短而简单的版本是:我有一个数据库。我有一个c#列表,用于与该数据库交互。程序启动,将数据转储到列表中,程序结束,将其保存回数据库 但我的问题是:在创建和删除列表项时,我需要确保列表(id)中的一个属性始终是唯一的。我在想一个列表可能有一些类似于SQL自动增量的东西?或者仅仅是哪个项目在哪个位置的数字索引 AddedDependents.Add(new Dependent { IsSpouse = isSpous
AddedDependents.Add(new Dependent
{
IsSpouse = isSpouse,
Id = /*unique id/*
});
如何生成
Guid
例如
因此,这意味着你的“Id”是一个字符串,我无法从你的问题中看出这是否可能
或者,不要将其设置为字符串,而是将其设置为Guid
类型,例如:
AddedDependents.Add(
new Dependent
{
IsSpouse = isSpouse,
Id = Guid.NewGuid()
});
您可以使用列表的索引:
AddedDependents.Add(new Dependent
{
IsSpouse = isSpouse,
Id = AddedDependents.Count
});
AddedDependents.Where(d => d.Id == dependent.Id);
然后Dependent
Id和列表索引是相同的,因此从列表中获取Dependent
变得很简单
如注释中所述,如果您可能要从该列表中删除元素,则不能仅通过Id获取依赖项,如AddedDependents[dependent.Id]
,而是需要遍历列表:
AddedDependents.Add(new Dependent
{
IsSpouse = isSpouse,
Id = AddedDependents.Count
});
AddedDependents.Where(d => d.Id == dependent.Id);
列表按顺序排列,并编制索引。您可以使用列表中他们所在的位置。AddedDependents[0]…等您的“保存到数据库”操作是否接受列表或一项?当您说“删除”时,它是数据库中的“软”或“硬”删除?在列表完成之前,数据库将保持不变,然后保存。所有操作都在列表中完成,然后使用新列表删除并重新创建数据库data@StefanH这是不是像Add(新项目),item.id=indexof(项目)?我不确定其语法。当您将其保存回数据库时,您可以使用for循环遍历列表,for循环的计数器将是列表中的索引,因此是唯一的。但是当您删除元素时会发生什么情况?这是我最初做的,但问题是:如果我有3个id为1、2、3的条目,我删除了2,创建了一个新的元素,这个元素也有id 3,给了我两个id=3的元素。你不能只做
AddedDependents[dependent.Id]
,而是在列表中循环查找Id,这还不错。