Where子句不在LINQ-To-XML中工作

时间:2015-05-20 06:21:07

标签: c# xml linq

我的XML文件是

 <?xml version="1.0" encoding="utf-8"?>
 <root>
    <Message type="sms">
        <Details locale="en" message-type="User.ResetPassword" />
        <Context>
            <Parameter name="Time" value=" 16:03:31" />
            <Parameter name="pswr" value="00" />
            <Parameter name="Date" value="18/12/2014" />
        </Context>
        <Receiver>+923328749199</Receiver>
    </Message>
  </root>

我的C#代码是

XElement xelement = XElement.Load("C:\\Users\\qadeer.hussain\\Desktop\\gw-msg-2.xml");
var name = from nm in xelement.Elements("Message").Elements("Context").Elements("Parameter")
           where nm.Element("Receiver").Value == "+923328749199"
           select nm;

问题是我的where子句不起作用,除了where子句查询工作正常。你能帮我解决一下这个问题。

2 个答案:

答案 0 :(得分:1)

    XElement xelement = XElement.Load("C:\\Users\\qadeer.hussain\\Desktop\\gw-msg-2.xml");
    var name = from nm in xelement.Elements("Message")
               from mm in nm.Elements("Context").Elements("Parameter")  
               where nm.Element("Receiver").Value == "+923328749199"
               select mm;

答案 1 :(得分:0)

<Receiver>不是<Parameter>的孩子,而是<Message>的孩子。试试这个:

XElement xelement = XElement.Parse(xml);
var name = from message in xelement.Elements("Message")
           from param in message.Elements("Context").Elements("Parameter")
           where (string)message.Element("Receiver") == "+923328749199"
           select param;