C# 使用userid+存储userid+;工作,但最后一个用户从三个“;“默认用户”;在CSV文件中,获取useridd++;
标题描述了我的问题:使用userid++存储userid是可行的,但是CSV文件中三个“默认用户”中的最后一个用户正在获取useridd++并在列表和CSV文件中向下推 所以我有一个小的控制台应用程序,它读取一个有三个默认用户的CSV文件,并在一个列表中存储三个默认用户。这三个用户需要始终保持在索引位置上: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,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);