如何在运行时将自定义数据集合存储在内存中

本文关键字:集合 存储 内存 数据集 自定义 运行时 数据 | 更新日期: 2023-09-27 18:17:29

我需要收集一些数据并将其临时存储在内存中,然后将其写入文件。一开始我以为我只需要一个Dictionary就可以了,但是当我完成的时候,我意识到我需要第三个元素在里面,所以我想Dictionarys是没有用的。

三个元素可以是string name, bool asked, DateTime today。

当函数开始时,我需要读取一个文件,其中这些元素每行存储一个,用管道分隔。在遍历函数时,如果在foreach循环中条件的计算结果为false,则需要添加项,如果条件为真,则需要删除项。当函数完成后,我需要擦除文件,并将数组的内容转储回文件。

意思就像检查John Doe是否被问到他的任务是否已经完成,距离他上次被问到已经过去XX天了。如果XX天过去了,从数组中删除他的记录,再次询问他,并将带有今天日期的新记录添加到数组中。(或者简单地,更改数组中的日期并再次请求)。然后将数组的内容转储到文件中,以便我们明天可以再检查一遍。

我以前从未使用过数组,所以我完全不知道如何做到这一点。当我在谷歌上搜索时,我发现了很多例子,但没有一个对我来说真正有意义。

你们谁能告诉我你们将如何处理这件事,因为我完全不知道。

如何在运行时将自定义数据集合存储在内存中

你应该为自己创建一个对象,就像…

class yourObject
{
    string name { get; set; }
    bool asked { get; set; }
    DateTime date { get; set; }
}

然后你可以把它们列成一个列表,在内存中存储多个。

List<yourObject> myObjects = new List<yourObject>();
yourObject myObject = new yourObject();
yourObject.name = "Bob";
yourObject.asked = true;
yourObject.date = DateTime.Today;
myObjects.Add(yourObject);

等等……在循环中执行此操作,或者从数据源执行一些数据绑定来填充它。

写文件是另一种动物,试着在谷歌上搜索c#如何向文件写入数据(这是微软的结果)。您需要做的是确定您希望如何存储它,因为这将决定您稍后如何读取它。你能用数据库表代替吗?

用这3个属性创建一个对象,然后列出这些对象的列表,如:

       class MyClass
       {
           string name;
           bool asked;
           DateTime date;
       }

作为一个更完整的例子,考虑如下:

public class SurveyData
{
    public string Name { get; set; }
    public bool Asked { get; set; }
    public DateTime Date { get; set; }
}
private Dictionary<string, SurveyData>() SurveyInfo = new Dictionary<string, SurveyData>();
public function LoadData()
{
    // Code to read from disk omitted for brevity. Assume you've parsed
    // the line into 3 variables: name, asked, date.
    var item = new SurveyData()
        {
           Name = name,
           Asked = asked,
           Date = date
        };
    this.SurveyInfo.Add(item.Name, item);
}

在这个示例中,您仍然使用Dictionary,因此可以按名称进行搜索。但是项目数据都存储在值中。所以你可以这样做:

public function UpdateIfAsked(string name)
{
    var item = this.SurveyInfo[name];
    if (item != null)
    {
        // Update the itme or remove it.
        if (item.Asked && item.Date < DateTime.Today)
        {
            SurveyInfo.Remove(item);
        }
    }
}

p。这在LINQ中变得容易得多,但对于你来说,这可能有点高级。

使用一个类来表示您处理的数据:

class PersonTask
{
    public string Name {get;set;}
    public bool Asked {get;set;}
    public DateTime Time {get;set;}
}

现在您可以使用List<PersonTask>来存储您需要的数据,或者如果您需要按姓名查找人员,则使用Dictionary<string,PersonTask>

我不明白你为什么要用数组。

创建一个像这样的对象:

public class RowItem
{
        public string Name{ get; set; }
        public bool Asked{ get; set; }
        public DateTime Date{ get; set; }
}
然后使用IList
IList<RowItem> rows = new List<RowItem>();