【发布时间】:2017-11-03 06:38:54
【问题描述】:
// <sdl:seg id="1" conf="Translated">
// <sdl:previous origin="source">
// <sdl:value key="created">Quick</sdl:value>
// <sdl:value key="modified">Brown</sdl:value></sdl:previous>
// <sdl:value key="created">Fox</sdl:value>
// <sdl:value key="modified">Jumps</sdl:value></sdl:seg>
foreach (XElement x in myDoc.Descendants(ns + "seg"))
foreach (XElement y in myDoc.Descendants(ns + "value"))
foreach (var z in y.Attributes())
if (z.Value == "modified")
MessageBox.Show(y.Value);
我有“布朗”和“跳跃”。
我只想有“跳跃”。 (我的意思是只有孩子不是孙子)
请帮忙。
目前,我只研究“foreach”循环而不是 LINQ(我知道那很好)。
问候。
[编辑] 这个怎么样。它什么也不发射。
foreach (var x in d.Descendants("seg").Elements("value").Attributes().Some("modified")
MessageBox.Show(x.Value);
[编辑 2]
foreach (var x in d.Descendants("seg").Elements("value").Attributes().Where(x => x.Value == "modified"))
MessageBox.Show( x.Parent.Value);
[编辑 3]
foreach (var x in d.Descendants("seg").Elements("value").Where(x => x.Attribute("key").Value == "modified"))
MessageBox.Show(x.Value);
【问题讨论】:
-
这样你得到属性,而不是元素。
-
是的……我找到了。虽然和LINQ混在一起,但主要是foreach...
-
啊。再次感谢评论。
-
是的,这是一种 linq 方式。不过有点丑吧?
-
我改变了一点.... 是的。我同意你的看法。没那么漂亮。