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

时间:2014-10-14 06:09:47

标签: c# linq

我想使用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();

1 个答案:

答案 0 :(得分:2)

你的问题还远未明确,但我怀疑你可能想要的东西:

// 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时都会重新评估。

请注意,如果name中缺少fixIssue元素,则使用上面的代码,您将获得空引用。您可以改为使用x.Element("name").Value(并且fix同上),在这种情况下,如果元素丢失,您将立即获得异常。