如何在运行时将自定义数据集合存储在内存中
本文关键字:集合 存储 内存 数据集 自定义 运行时 数据 | 更新日期: 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>();