linq where子句没有产生预期的结果

时间:2011-11-08 20:33:30

标签: asp.net xml vb.net linq linq-to-xml

我有以下xml:

<Root>
    <Result img="1.png" name="a">
        <Programs>
            <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
        </Programs>
    </Result>
    <Result img="2.png" name="b">
        <Programs>
            <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
            <Program name="foo2">
                <ProgramID>2</ProgramID>
            </Program>
        </Programs>
    </Result>
    <Result img="3.png" name="c">
        <Programs>
              <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
        </Programs>
    </Result>
    <Result img="4.png" name="d">
        <Programs>
             <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
        </Programs>
    </Result>
</Root>

我正在尝试使用以下linq语句通过ProgramID过滤xml,但是当我传递值为2时,我总是得不到任何结果,奇怪的是当我传递值1时,我确实得到预期结果,这是所有四个结果

xOut = New XElement("Root", _
                                   From s In x...<Result> _
                                   Where s.<Programs>.<Program>.<ProgramID>.Value = 2 _
                                   Select s)

linq查询有什么问题。为什么1工作但2不工作?我还希望在过滤后保留xml结构。

1 个答案:

答案 0 :(得分:1)

以下是您在C#中的表现方式:

        var xOut = new XElement(
            "Root",
            x.Descendants("Result")
            .Where(y => y.Descendants("Programs").Descendants("Program").Descendants("ProgramID")
            .Any(z => z.Value == "2")));

不确定VB.NET的等价物是什么,抱歉。