Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过lambda表达式获取子节点值_C#_Linq - Fatal编程技术网

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

C# 通过lambda表达式获取子节点值,c#,linq,C#,Linq,我想使用lambda表达式从name节点和fix节点获取值 <Issue> <name>asdasasdasd</name> <fix>zxcczxczxczzxc </fix> </Issue> 你的问题还很不清楚,但我怀疑你可能想要这样的东西: // I would strongly discourage you from using global variables... var issues = doc.D

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

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

你的问题还很不清楚,但我怀疑你可能想要这样的东西:

// 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()
调用将强制立即计算查询;没有它,每次迭代
问题时都会重新评估它


请注意,如果
问题
中缺少
名称
修复
元素,使用上面的代码,您将得到一个空引用。您可以改为使用
x.Element(“name”).Value
(对于
fix
),在这种情况下,如果元素丢失,您将立即得到一个异常。

谢谢,它起到了作用。我们使用enumerable是因为在该XML中,只有issue node和fix node标记。@Vecto7:不清楚“我们使用enumerable”是什么意思,但听起来您可以使用到
字符串的显式转换,而不是
属性,如果这就是您的意思…在XML文件中有50个issue and fix节点,所以我使用了AsEnumerable()而不是list@Vecto7:这听起来像是不合情理的。你认为你会得到什么好处?这并不是说50个对象代表了显著的内存损失…@Vecto7:即使你想使用惰性计算,你也不需要调用一个numerable。
// 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();