Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在列表中获取唯一索引?_C# - Fatal编程技术网

C# 在列表中获取唯一索引?

C# 在列表中获取唯一索引?,c#,C#,简短而简单的版本是:我有一个数据库。我有一个c#列表,用于与该数据库交互。程序启动,将数据转储到列表中,程序结束,将其保存回数据库 但我的问题是:在创建和删除列表项时,我需要确保列表(id)中的一个属性始终是唯一的。我在想一个列表可能有一些类似于SQL自动增量的东西?或者仅仅是哪个项目在哪个位置的数字索引 AddedDependents.Add(new Dependent { IsSpouse = isSpous

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

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

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,这还不错。