我的LINQ查询仅返回第一个结果(Class)。这是我正在使用的代码:
XDocument xmlDoc = XDocument.Load("Decks/Test.xml");
List<Cards> tempdeck = (from deck in xmlDoc.Elements("Deck")
select new Cards
{
Name = deck.Element("Type").Value
}).ToList<Cards>();
foreach (var item in tempdeck)
{
((MessageBroker)App.Current.Resources["MessageBroker"]).GameLog.Add(item.Name.ToString());
}
这就是我的XML文件:
<Deck>
<Type>
<Name>Class</Name>
</Type>
<Type>
<Name>stsfs</Name>
</Type>
<Type>
<Name>Class</Name>
</Type>
<Type>
<Name>Class</Name>
</Type>
</Deck>
我正在以这种方式格式化它,因为当我开始工作时,我想在查询中添加多个属性 - 而不仅仅是名称。
提前致谢!
答案 0 :(得分:3)
您的示例中并不清楚,但您似乎有一个 Deck
元素与多个 Type
子元素。你的代码假设相反,即多个甲板,每个甲板都有一个(或一个有趣的)类型孩子。
请改为尝试:
( from type in xmlDoc.Element("Deck").Elements("Type")
select new Cards { Name = type.Value }
).ToList()
“卡片”是从唯一牌组的每个类型的孩子产生的。
如果做有多个套牌,请使用Mark Cidade的回答。
答案 1 :(得分:1)
在您的查询中,您只需从单个Deck
元素中进行选择,然后选择第一个Type
元素。您需要从每个Type
元素中进行选择:
List<Cards> tempdeck = (from deck in xmlDoc.Elements("Deck")
from type in deck.Elements("Type")
select new Cards
{
Name = type.Value
}).ToList<Cards>();