我正在尝试对文本文档中保存的日期进行排序,我已经使用列表完成了此操作。当我尝试将详细信息保存回文本文档时,在文档中我看到保存的所有内容是System.Collections.Generic.List`1[Event_Manager.Form3+MyClass]下面的代码是用一个按钮执行的,据说可以对日期进行排序,但我什至看不到这段代码是否真的对日期进行了排序,因为我不断得到System.Collections.Generic.List`1[Event_Manager.Form3+MyClass]保存而不是原始数据。我尝试使用 .ToString() 来防止这种情况发生,但它仍然显示保存到文档中的保存输出。 // Read the file and display it line by line. StreamReader file = new StreamReader("Events.txt"); List<MyClass> myClassList = new List<MyClass>(); while ((line = file.ReadLine()) != null) { string[] split = line.Split(','); MyClass myclass = new MyClass(); myclass.date = DateTime.Parse(split[2]); myClassList.Add(myclass); } file.Close(); // Sort the list by date List<MyClass> myClassListSorted = myClassList.OrderByDescending(x => x.date).ToList(); using (StreamWriter sr = new StreamWriter(@"Events.txt")) { foreach (var item in myClassList) { sr.WriteLine(myClassListSorted.ToString()); } sr.Close(); }我应该能够看到我最初保存在文本文档中的实际数据,但是带有排序日期,而是它只是System.Collections.Generic.List`1[Event_Manager.Form3+MyClass]
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
您正在循环访问未排序的列表,然后尝试写入排序的列表对象(而不是排序列表内的项目)。接近尾声时你应该这样做:
foreach (var item in myClassListSorted)
{
sr.WriteLine(item.date.ToString());
}
根据需要设置日期属性的格式。或者您可以将原始行保存在每个 MyClass 中,然后在排序后将该行写入文件。
while ((line = file.ReadLine()) != null)
{
string[] split = line.Split(',');
MyClass myclass = new MyClass();
myclass.date = DateTime.Parse(split[2]);
MyClass.originalLine = line; // <---------
myClassList.Add(myclass);
}
然后在循环中:
sr.WriteLine(item.originalLine);
这样,文本文件中的数据是相同的,但只是按排序顺序排列。
- 1 回答
- 0 关注
- 129 浏览
添加回答
举报
0/150
提交
取消