Linq to Sql GroupJoin 分页怪事

发布于 2024-09-01 13:34:57 字数 661 浏览 5 评论 0原文

我注意到我试图优化的 LinqToSql 查询中有一个奇怪的 Sql 翻译。

如果我执行以下命令,

Recipients.GroupJoin(
        RecipientAttributes, 
        x => x.Recipient_Id, 
        y => y.Recipient_Id, 
        (x,y) => new {Recipient = x, Attributes = y})
    .Skip(1)
    .Take(1000)

它将按预期在单个查询中执行。

但是,

Recipients.GroupJoin(
        RecipientAttributes, 
        x => x.Recipient_Id, 
        y => y.Recipient_Id, 
        (x,y) => new {Recipient = x, Attributes = y})
    .Skip(0)
    .Take(1000)

针对每个属性选择在单独的查询中执行。

删除 Skip(0) 也没有什么区别。

谁能解释一下这一点,我可以做些什么来让第一页查询在单个 sql 语句中执行?

I have noticed a strange Sql Translation in a LinqToSql Query I was trying to optimise.

If I execute the following

Recipients.GroupJoin(
        RecipientAttributes, 
        x => x.Recipient_Id, 
        y => y.Recipient_Id, 
        (x,y) => new {Recipient = x, Attributes = y})
    .Skip(1)
    .Take(1000)

It executes in a single query as expected.

However

Recipients.GroupJoin(
        RecipientAttributes, 
        x => x.Recipient_Id, 
        y => y.Recipient_Id, 
        (x,y) => new {Recipient = x, Attributes = y})
    .Skip(0)
    .Take(1000)

executes in a separate query for each Attributes selection.

Removing the Skip(0) makes no difference either.

Can anyone explain this and is there something I can do to get the first page query executing in a single sql statement?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文