我有以下xml
<students>
<student>
<id>12</id>
<name>Mohsan</name>
</student>
<student>
<id>2</id>
</student>
<student>
<id>3</id>
<name>Azhar</name>
</student>
</students>
Run Code Online (Sandbox Code Playgroud)
请注意,在2名称元素中缺失.
我必须使用Linq to XML读取这个xml
我使用以下代码来获取所有学生..
请建议我改进此代码
var stds = from std in doc.Descendants("student")
select new
{
ID = std.Element("id").Value,
Name = (std.Element("name")!=null)?std.Element("name").Value:string.Empty
};
Run Code Online (Sandbox Code Playgroud)
您可以使用以下事实:从XElementtostring返回null,对于null XElement引用返回null .然后,您可以使用null-coalescing运算符从null转到空字符串:
var stds = from std in doc.Descendants("student")
select new
{
ID = std.Element("id").Value,
Name = (string) std.Element("name") ?? "";
};
Run Code Online (Sandbox Code Playgroud)
使用'let'语法可以避免两次询问Element("name")
var stds = from std in doc.Descendants("student")
let elName = std.Element("name")
select new
{
ID = std.Element("id").Value,
Name = (elName!=null)?elName.Value:string.Empty
};
Run Code Online (Sandbox Code Playgroud)