程序是读取遍历一个XML文件,把需要的把“日期”和“名称”放进一个List<T>集合里面。“日期”可以放进去了,但“名称”放不进。请指教,谢谢!
static void Main(string[] args)
        {
            Console.Write("请输入年份:");
            string Year = Console.ReadLine();
            int YearResult = 0;
            string XmlTitle = string.Empty;
            if (int.Parse(Year) >= 2012 && int.Parse(Year) <= 2017)
            {
                YearResult = int.Parse(Year) - DateTime.Now.Year;
            }
            switch (YearResult)
            {
                case 0:
                    XmlTitle = "HolidayDate_2012";
                    break;
                case 1:
                    XmlTitle = "HolidayDate_2013";
                    break;
                case 2:
                    XmlTitle = "HolidayDate_2014";
                    break;
                case 3:
                    XmlTitle = "HolidayDate_2015";
                    break;
                case 4:
                    XmlTitle = "HolidayDate_2016";
                    break;
                case 5:
                    XmlTitle = "HolidayDate_2017";
                    break;
            }            List<DataInfo> data = new List<DataInfo>();            XmlTextReader txtReader = new XmlTextReader(@"F:\HolidayData.xml");
            while (txtReader.Read())
            {
                if (txtReader.Name == XmlTitle)
                {
                    string[] vals = txtReader.ReadString().Trim().Split(',');
                    foreach(string strDate in vals)
                    {
                        data.Add(new DataInfo { HolidayDate = DateTime.Parse(strDate) });
                    }
                }                if (txtReader.Name == "HolidayName")
                {
                    string[] strVal = txtReader.ReadString().Trim().Split(',');
                    foreach (string strName in strVal)
                    {
                        data.Add(new DataInfo { HolidayName = strName });  //这里的值add不进data
                    }
                }
            }
            PrintRes(data);
            Console.ReadKey();
        }
        
        static void PrintRes(List<DataInfo> list)
        {
            foreach (DataInfo data in list)
            {
                Console.WriteLine(data.HolidayName,data.HolidayDate);   //data.HolidayName里面没有值。
            }
        }    }    class DataInfo
    {
        public string HolidayName { get; set; }
        public DateTime HolidayDate { get; set; }
    }

解决方案 »

  1.   

     List<DataInfo> data = new List<DataInfo>();这个DataInfo已经指定了数据类型的。只能放DataInfo
      

  2.   

    data.Add(new DataInfo { HolidayName = strName });  
    这句下面的}设个断点,看是否执行过。如果没执行过,说明代码逻辑不对。
      

  3.   

    DataInfo里面有两个类型的实体,分别是DateTime与String的。现在DateTime的值可以add进去。但String的不行。但strName里面是有值的。谢谢!
      

  4.   

    有可能Add进去的是空字符串。
      

  5.   

    foreach (string strName in strVal)
    {
        data.Add(new DataInfo { HolidayNames = strName });
    }
    这里的strName,是有值,每次循环都有一个值。就是Add进去集合里,没有保存下来。不知那里出问题了,谢谢!