修复 C# 中的“System.Collections.Generic.List`1”

我正在尝试对文本文档中保存的日期进行排序,我已经使用列表完成了此操作。当我尝试将详细信息保存回文本文档时,在文档中我看到保存的所有内容是


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]


精慕HU
浏览 130回答 1
1回答

慕侠2389804

您正在循环访问未排序的列表,然后尝试写入排序的列表对象(而不是排序列表内的项目)。接近尾声时你应该这样做:foreach (var item in myClassListSorted){&nbsp; &nbsp; &nbsp;sr.WriteLine(item.date.ToString());}根据需要设置日期属性的格式。或者您可以将原始行保存在每个 MyClass 中,然后在排序后将该行写入文件。while ((line = file.ReadLine()) != null){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string[] split = line.Split(',');&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MyClass myclass = new MyClass();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myclass.date = DateTime.Parse(split[2]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MyClass.originalLine = line; // <---------&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myClassList.Add(myclass);}然后在循环中:&nbsp; &nbsp; &nbsp;sr.WriteLine(item.originalLine);这样,文本文件中的数据是相同的,但只是按排序顺序排列。
打开App,查看更多内容
随时随地看视频慕课网APP