如何使用linq2Xml没有null异常的可能性?

Era*_*lel 4 c# linq-to-xml

我写了这个简单的linq-to-xml查询,似乎使用linq语法无法避免null异常.我用错了吗?什么应该是正确的(和简短的)Linq2Xml语法?

linq2Xml查询

var userData =
    queryUserResponseData.Elements("user")
        .Single(u => u.Element("username").Value == userName);
Run Code Online (Sandbox Code Playgroud)

XML

<data>
    <user>
        <username>User1</username>
        <userid>123</userid>
    </user>
    <user>
        <username>User2</username>
        <userid>456</userid>
    </user>
    <user>
        <userid>999</userid>
    </user>
</data>
Run Code Online (Sandbox Code Playgroud)

Meh*_*hin 5

XElement和XAttribute有一些显式转换运算符,可将其值转换为特定类型.它们非常有用,因为当元素或属性丢失时返回null.

var userData = queryUserResponseData.Elements("user").Single(u => (string)u.Element("username") == userName);
Run Code Online (Sandbox Code Playgroud)

  • '(string)u.Element("username")`的+1.如果有一些额外的解释为什么/如何解决问题,答案将是完美的. (2认同)