![](/img/trans.png)
[英]How to perform a Linq “First” query on a strongly-typed DataTable object?
[英]How to get strongly-typed collection from XML using Linq
這是我的XML文件的一個片段(我意識到它的格式並不理想,但遺憾的是我不能改變它):
<PRODMENUS>
<MENU id="90168" shortname="BrdSumPV13" mealname="Dinner" mealid="7" servedate="20130102">Summer PREV 2013</MENU>
<MENU id="90153" shortname="BrdSumPV13" mealname="Breakfast" mealid="46" servedate="20130102">Summer PREV 2013</MENU>
<MENU id="90162" shortname="BrdSumPV13" mealname="Lunch" mealid="6" servedate="20130102">Summer PREV 2013</MENU>
</PRODMENUS>
以下功能有效,但它只抓取第一個菜單元素,而不是其余的
public static List<Menu> GetLocations(string uri)
{
XDocument xmlDoc = XDocument.Load(uri);
var menus = from menu in xmlDoc.Elements("PRODMENUS")
select new Menu
{
Id = Convert.ToInt32(menu.Element("MENU").Attribute("id").Value),
ShortName = menu.Element("MENU").Attribute("shortname").Value,
MealName = menu.Element("MENU").Attribute("mealname").Value,
MealId = Convert.ToInt32(menu.Element("MENU").Attribute("mealid").Value)
};
return menus.ToList();
}
如何使用上述XML文件獲取3個Menu對象的集合?
你很近
XDocument xmlDoc = XDocument.Load(uri);
var menus = from menu in xmlDoc.Descendants("MENU")
select new Menu
{
Id = Convert.ToInt32(menu.Attribute("id").Value),
ShortName = menu.Attribute("shortname").Value,
MealName = menu.Attribute("mealname").Value,
MealId = Convert.ToInt32(menu.Attribute("mealid").Value)
};
return menus.ToList();
你也可以使用一些快捷方式,如Id = (int)menu.Attribute("id")
而不是Id = Convert.ToInt32(menu.Attribute("id").Value)
你想要更深入1級並執行xmlDoc.Elements("PRODMENUS").Elements("MENU")
var menus = from menu in xmlDoc.Elements("PRODMENUS").Elements("MENU")
select new Menu
{
Id = Convert.ToInt32(menu.Attribute("id").Value),
ShortName = menu.Attribute("shortname").Value,
MealName = menu.Attribute("mealname").Value,
MealId = Convert.ToInt32(menu.Attribute("mealid").Value)
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.