我使用以下代码从XML文档中获取数据:
XDocument xml = XDocument.Load(xmlPath);
var bikes = from b in xml.Descendants("Photo")
select new
{
date = (DateTime)b.Element("Date"),
staffno = (Int32)b.Element("StaffNo"),
file = (string)b.Element("File"),
crimeref = (string)b.Element("CrimeRef")
};
如果我使用var selectedBikes = bikes.Count();
之类的东西,我可以看到总共有4辆自行车。但是,我不确定如何将这些数据实际存入列表,以便我可以使用Razor在我的视图中显示它。
我已经尝试了bikes.Select()
,bikes.All()
和其他一些人,但没有任何喜悦。
答案 0 :(得分:2)
var lstBikes = bikes.ToList(); // or .ToArray(); your choice.
现在,bikes
原样是IEnumerable
,因此您可以将其传递给视图。您可能还想定义一个Photo
类,并像这样使用它:
class Photo
{
DateTime date {get; set;}
Int32 staffno {get; set;}
string file {get; set;}
string crimeref {get; set;}
};
// :
var bikes = from b in xml.Descendants("Photo")
select new Photo
{
date = (DateTime)b.Element("Date"),
staffno = (Int32)b.Element("StaffNo"),
file = (string)b.Element("File"),
crimeref = (string)b.Element("CrimeRef")
};
然后您可以在视图中说@model IEnumerable<Photo>
。
答案 1 :(得分:2)
很抱歉,如果我错了,因为我们暂时没有使用xml文件,但LINQ通常会返回IEnumerable&lt;&gt;宾语。因此,如果您想将其用作列表,您可以将其作为bikes.ToList()
/它将枚举您的对象,您应该记住/。此外,如果您不打算在视图中添加/删除IEnumerable对象中的项目(这通常不是一个好主意,将您的逻辑保留在视图之外,只是在那里显示数据),您可以简单地迭代结果foreach循环。