繁体   English   中英

尝试从xml文件创建列表时出现InvalidCastException

[英]InvalidCastException when trying to make a list from xml file

我正在尝试使用从xml文件读取信息的MVC在Web应用程序中创建表格。 我试图先排序此列表,然后再将其发送回控制器,但orderby行上有一个InvalidCastException。 我究竟做错了什么?

string xmlData = HttpContext.Current.Server.MapPath("~/App_Data/HighScores.xml");
DataSet ds = new DataSet();
ds.ReadXml(xmlData);
var scores = new List<ExternalScoreModel>();

try
{
    scores = (from r in ds.Tables[0].AsEnumerable()
              orderby r.Field<Int32>("Score") descending
              select new ExternalScoreModel
              {
                  Score = Convert.ToInt32(r[0]),
                  FirstName = r[1].ToString(),
                  LastName = r[2].ToString(),
              }).ToList();
}
catch (IndexOutOfRangeException e)
{
    //TODO
}
return scores;

通过将orderby移动到select之后来解决此问题

scores = (from r in ds.Tables[0].AsEnumerable()
                      select new ExternalScoreModel
                      {
                          Score = Convert.ToInt32(r[0]),
                          FirstName = r[1].ToString(),
                          LastName = r[2].ToString(),
                      }).OrderByDescending(x => x.Score).ToList();

“得分”列中的数据很可能不是整数。 仔细检查XML文件中的数据。 该值也可能会丢失或为null,在这种情况下,您可以执行以下操作,并将分数设为0或其他所需的值。

 orderby r.Field<Int32?>("Score") == null ? 0 : r.Field<Int32>("Score") descending

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM