在列表中获取唯一索引?

时间:2012-08-09 16:44:05

标签: c#

简短的版本是这样的:我有一个数据库。我有一个用于与该数据库交互的c#列表。程序启动,将数据转储到列表中,程序结束,将其保存回数据库。

这是我的问题:我需要确保在创建和删除列表项时列表(id)中的某个属性始终是唯一的。我想也许列表可能有类似于SQL自动增量的东西?或者也许只是一个项目在哪个位置的数字索引?

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

2 个答案:

答案 0 :(得分: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 :(得分:0)

您可以使用列表的索引:

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

然后Dependent Id和列表索引是相同的,因此从列表中获取Dependent变得微不足道。

正如评论中所提到的,如果您可能从此列表中删除元素,那么您不能通过Id获取依赖项,例如AddedDependents[dependent.Id],而是需要遍历列表:

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