【问题标题】:Sorting and storing data排序和存储数据
【发布时间】:2020-11-13 11:55:16
【问题描述】:

所以我在尝试以我希望的方式存储数据以便稍后显示它时遇到了真正的麻烦,基本上我正在将一个 .CSV 文件加载到我的程序中,它有 3 列,比如说动物性别和年龄.共有8种独特的动物,80种性别和400个年龄。所以 1 种动物可能有 10 种性别和 200 种年龄等等,类似于数据库、表格和列。

我想将这些存储在他们自己的自定义类中,这样我就可以说所有动物的性别 [1] 并且这 10 个值会返回。 CSV 示例:

cat,blue,a
dog,male,p
dog,male,f
dog,female,l

我遇到的问题是存储这些值,您可以看到它们不是每行唯一的,并且查看第 2 行您可以看到男性下的狗集合应该具有 p 和 f。我试过用字典把它们全部分成列表,这样我就可以把它们映射到正确的地方,但总是遇到独特的关键问题。

我试图存储这些数据的对象是:

Dictionary<string, Dictionary<string, List<string>>> Results = new Dictionary<string, Dictionary<string, List<string>>>();

我没有“方法”来寻求帮助,因为我什至无法做到那一步,我在这里询问我应该如何存储这些数据。除了上述解决方案,我还尝试了一个自定义类的列表,其中包含 3 个字典来存储和映射数据,但又失败了。

任何人都可以就我如何在数据库、表格和列的样式等数据库中排序、存储和访问这些数据提供帮助吗?谢谢!或者任何可能有帮助的 nuget 包?

【问题讨论】:

  • “蓝色”是性别吗?
  • 类似here。您可以查询文件,而不是尝试将其全部加载到自定义类中。
  • “将复杂的数据结构存储为字符串”的问题已经解决了很多次,最近一次是使用 JSON。我建议Newtonsoft JSON。只需将您的字典序列化为 JSON 字符串并将其粘贴到文件中即可。

标签: c# storage


【解决方案1】:

创建一个类动物,例如:

class Animal
{
    public string Name {get; set; }
    public string Gender { get; set; }
    public string Age { get; set; }
}

将您的数据加载到List&lt;Animal&gt; animals,然后您可以使用 linq 进行查询。示例:

查询所有狗:animals.Where(x =&gt; x.Name == "dog");

查询所有狗的性别:

animals.Where(x => x.Name == "dog")
       .Select(x => x.Gender)
       .Distinct();

【讨论】:

    猜你喜欢
    • 2013-08-31
    • 1970-01-01
    • 2021-09-12
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2018-11-17
    • 2020-12-13
    相关资源
    最近更新 更多