新手LINQ问题:在LINQ查询中分页可能吗?

Bul*_*nes 14 c# linq-to-xml

是否可以在Linq查询中使用"分页"功能?假设我有一些像这样的XML:

<Root>
    <BetaSection>
        <Choices>
            <SetA>
                <Choice id="choice1">Choice One</Choice> 
                <Choice id="choice2">Choice Two</Choice>
                <Choice id="choice3">Choice Three</Choice>
                .
                .
                .
                <Choice id="choice48">Choice Forty-Eight</Choice>
                <Choice id="choice49">Choice Forty-Nine</Choice>
                <Choice id="choice50">Choice Fifty</Choice>
            </SetA>
        </Choices>
    </BetaSection>
</Root>
Run Code Online (Sandbox Code Playgroud)

如果我想实现分页功能,我是否能够为LINQ查询提供偏移量,以便我可以从第11个元素开始到第20个元素结束?如果是这样,如果数据是对象列表而不是XML,查询是否会有所不同?

Jam*_*ran 20

var q = from X in Choices.Skip((page-1)*pageSize).Take(pageSize)
        select X;
Run Code Online (Sandbox Code Playgroud)

现在,如果你需要一个where子句,它会变得有点棘手:

var q = (from X in Choices
         where x.SomeField == SomeValue
         select X).Skip((page-1)*pageSize).Take(pageSize);
Run Code Online (Sandbox Code Playgroud)

  • 对于第二种情况,仅使用扩展方法而不是混合使用语言语法可能会更容易:var q = Choices.Where(x =&gt; x.SomeField == SomeValue).Skip((page-1)* pageSize) .Take(pageSize); (2认同)