需要更新列表项,然后将其放在文本文件中

时间:2019-01-11 19:01:02

标签: c# linq

所以我正在做这个c#程序,它基本上是一台咖啡机。要求用户注册该实例并将其添加到文本文件中,然后登录,然后从提供的列表中询问他想要哪种咖啡,最后增加一个名为“ coffee points”的属性。问题是我不知道如何更新文本文件中的咖啡点。我可以获取咖啡分数并将其增加1,然后在控制台中进行打印,但是,我不知道如何仅更新特定用户的文本文件中的咖啡分数。

下面是我用来检索已登录用户的咖啡点并将它们加1并将它们存储在变量“ newCoffeePoints”中的代码。

int newCoffeePoints = 0;
for (int i = 0; i < customerList.Count; i++)
{
    if (customerList[i].iUsername == cu2.iUsername)
    {
        customerList[i].iCoffeePoints += 1;
        newCoffeePoints = customerList[i].iCoffeePoints;
        break;
    }
}

2 个答案:

答案 0 :(得分:1)

为此,我们有许多不同类型的数据库,例如Mongo,SQL等。

但是,如果您尝试对对象进行序列化/反序列化并将其保存到其他序列化类型中的文件中,则可能需要考虑JSON格式。库Newtonsoft.js是我们(C#开发人员)通常使用的库。

您可以创建一个反映您需要的虚拟结构。 由于我们可能想通过键来查找对象,因此Dictionary<TKey, TValue>集合比List<T>更适合。

Dictionary<key, value>中对用户执行所需的任何操作,然后将其序列化为JSON,并使用File.WriteAllText(json)方法将其保存到光盘中。

是在每次更新后执行此操作(以便在应用程序崩溃时保存所有数据)还是在应用程序即将完成执行时执行一次,这取决于您的需求。

带有字典的字段可能类似于:

// CKeyType here is a type of customer's id field such as int, string etc.
private static readonly CustomerDict = new Dictionary<CKeyType, Customer>();

答案 1 :(得分:0)

您可以使用JSON和Newtonsoft Library轻松解决此问题。 (上面提到的Fabjan)

这是来自Microsoft Virtual Academy的教程链接,您可以遵循。

https://mva.microsoft.com/en-US/training-courses/introduction-to-json-with-c-12742?l=xxtX274UB_8805494542