带参数的Linq xml查询

时间:2013-12-07 02:19:32

标签: c# xml linq linq-to-xml

我的目标是为XDocument创建一个查询,如果正确的日期位于属性strikePrice中,则该查询仅返回symbol的值。

示例XDocument中的symbol有一个代码AAPL日期 131221,类型C,它以变量结尾位数。

示例XDocument:

<query>
    <results>
        <optionsChain>
            <option symbol="AAPL131221C00245000" type="C">    
                <strikePrice>245</strikePrice>
                <lastPrice>299.04</lastPrice>
                <change>0</change>
                <changeDir/>
                <bid>314.1</bid>
                <ask>317</ask>
                <vol>1</vol>
                <openInt>5</openInt>
            <option/>
        <optionChain/>
        <optionsChain>
        ....
        <optionsChain/>
    <results/>
<query/>

我可以使用以下代码从symbol的字符串中检索日期

string startingString = "AAPL";
string symbol = "AAPL131221C0024500";

string date = symbol.Substring(startingString.Length, 6))

我可以使用以下查询检索所有罢工:

XDocument Doc = Example XDocument;
List<string> list = new List<string>();
        list = Doc.Descendants("results")
                .Descendants("optionsChain")
                .Descendants("option")
                .Elements("strikePrice")
                .Select(d => d.Value)
                .ToList();

如果正确的日期位于属性strikePrice中,如何将两者结合起来并构建一个返回symbol值的查询?

1 个答案:

答案 0 :(得分:1)

如何使用XPath代替并以这种方式查询值。

var nodes = doc.SelectNodes("//query/results/optionsChain/option[starts-with(@symbol, '--lookup value--')]/StrikePrice");

尚未对上述内容进行测试,但对XmlDocument非常有用。

以下是在XDocument http://msdn.microsoft.com/en-us/library/bb675197.aspx上使用XPathEvaluate的示例