C# 使用userid+存储userid+;工作,但最后一个用户从三个“;“默认用户”;在CSV文件中,获取useridd++;

C# 使用userid+存储userid+;工作,但最后一个用户从三个“;“默认用户”;在CSV文件中,获取useridd++;,c#,list,linq,csv,methods,C#,List,Linq,Csv,Methods,标题描述了我的问题:使用userid++存储userid是可行的,但是CSV文件中三个“默认用户”中的最后一个用户正在获取useridd++并在列表和CSV文件中向下推 所以我有一个小的控制台应用程序,它读取一个有三个默认用户的CSV文件,并在一个列表中存储三个默认用户。这三个用户需要始终保持在索引位置上: userid,username,email,password,userrole 1,Inkoop,inkoop@gimpies.nl,123,purchase 2,Verkoop,verko

标题描述了我的问题:使用userid++存储userid是可行的,但是CSV文件中三个“默认用户”中的最后一个用户正在获取useridd++并在列表和CSV文件中向下推

所以我有一个小的控制台应用程序,它读取一个有三个默认用户的CSV文件,并在一个列表中存储三个默认用户。这三个用户需要始终保持在索引位置上:

userid,username,email,password,userrole
1,Inkoop,inkoop@gimpies.nl,123,purchase
2,Verkoop,verkoop@gimpies.nl,123,sales
3,Beheer,beheer@gimpies.nl,123,admin
读取CSV文件并将其存储在列表中的读取方法:

public static List<User> LoadUsersFromCSV()
        {
            using (var reader = new StreamReader("users.csv"))
            using (var csvReader = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                // csvReader.Configuration.Delimiter = ";";
                // csvReader.Configuration.IgnoreBlankLines = true;
                csvReader.Configuration.HasHeaderRecord = true;
                // csvReader.Configuration.PrepareHeaderForMatch = (string header, int index) => header.ToLower();
                // csvReader.Configuration.MissingFieldFound = null;
                csvReader.Read();
                csvReader.ReadHeader();
                    
                // Store all content inside a new List as objetcs
                var users = csvReader.GetRecords<User>().ToList();  
                    
                return users;
                
                // try
                // {
                //                   
                // }
                // catch (CsvHelper.HeaderValidationException exception)
                // {
                //     Console.WriteLine(exception);
                // }
                
            }
            
        }
我不希望用户Beheer向下移动!我希望新用户作为列表的最后一个索引,并获取userid++


我在这里做错了什么?

您正在递增上一个用户id,而不是返回比上一个高一个的id

int userid = (usr == null ? 1 : usr.userid + 1);

天啊。。。就这么简单!我们有时会错过最简单的事情…:-)非常感谢。我想这也会起到相反的作用吧?因此,删除用户将-1所选变量。是的,如果你删除一个ID最高的用户,你添加的下一个将得到这个ID,但是如果你删除中间的一个用户,你将在IDS中有一个缺口。如果您想确保不会发生这种情况,可以在保存时生成ID,但是当您删除文件中已经存在的用户时,仍然会出现问题,因为所有ID都会更改。
++
运算符放在变量之后时,返回变量的起始值,然后递增。
public void WriteUsersToCSV(List<User> users)
        {
            
            // overwrite the file each time; indicated by the `false` parameter
            using (var writer = new StreamWriter("users.csv", false))
            using (var csvWriter = new CsvWriter(writer, CultureInfo.InvariantCulture))
            {
                // Order the list again so the userid's are asc
                users = users.OrderBy(u => u.userid).ToList();
                
                // csvWriter.Configuration.HasHeaderRecord = false; // commented out as we write the whole file every time including the header
                csvWriter.WriteRecords(users);
                Console.WriteLine("New user added to users.csv");
            }
        }
userid,username,email,password,userrole
1,Inkoop,inkoop@gimpies.nl,123,purchase
2,Verkoop,verkoop@gimpies.nl,123,sales
3,Bas,bas@bas.nl,123,admin
4,Tim,tim@tim.nl,123,sales
5,Beheer,beheer@gimpies.nl,123,admin
int userid = (usr == null ? 1 : usr.userid + 1);