通过lambda表达式获取子节点值

本文关键字:子节点 获取 表达式 lambda 通过 | 更新日期: 2023-09-27 18:26:22

我想使用lambda表达式从name节点和fix节点获取值。

<Issue>
  <name>asdasasdasd</name>
  <fix>zxcczxczxczzxc </fix>
</Issue>

我的尝试是

GlobalVariables.issuesList = doc.Descendants("Issue").Select(s => new IssueModel(s.Value, s.Value) { }).AsEnumerable();

通过lambda表达式获取子节点值

您的问题还很不清楚,但我怀疑您可能想要类似以下内容:

// I would strongly discourage you from using global variables...
var issues = doc.Descendants("Issue")
                .Select(x => new IssueModel((string) x.Element("name"),
                                            (string) x.Element("fix")))
                .ToList();

ToList()调用将强制立即评估查询;如果没有它,每次在issues上迭代时都会重新评估它。

请注意,如果Issue中缺少namefix元素,那么使用上面的代码,您将获得一个null引用。您可以使用x.Element("name").Valuefix也是如此),在这种情况下,如果元素丢失,您将立即获得异常。