如何限制非泛型 IQueryable 中的记录数

发布于 2024-11-02 05:59:34 字数 419 浏览 1 评论 0原文

当我有一个 IQueryable (通用)时,我可以使用 Take 方法从查询返回的结果集中仅返回 N 条记录。

当我使用简单的非通用 IQueryable 时,Take 方法不可用。是否有其他方法可以达到与 Take 方法相同的结果?

更新:正如理查德指出的那样,另一个问题解决了这个问题。就我而言,必要的代码比 Jon Skeet 在另一个问题中提出的代码更简单。这是我的最终代码:

dynamic tempQuery = originalQuery;
finalQuery = Queryable.Take(tempQuery, numRecords);

When I have an IQueryable<T> (generic) I can use the Take method to return only N records from the result set returned by the query.

When I'm using a simple non-generic IQueryable, Take method is not available. Is there an other way to achieve the same result as the Take method?

UPDATE: as Richard pointed, another question solves this problem. In my case, the necessary code was even simpler then the code proposed by Jon Skeet in the other question. That's my final code:

dynamic tempQuery = originalQuery;
finalQuery = Queryable.Take(tempQuery, numRecords);

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残月升风 2024-11-09 05:59:34

使用此扩展方法:

public static IQueryable Take(this IQueryable source, int count)
{
    MethodCallExpression mce = Expression.Call(
        typeof(Queryable),
        "Take",
        new Type[] { source.ElementType },
        source.Expression,
        Expression.Constant(count)
    );
    return source.Provider.CreateQuery(mce);
}

只要您匹配方法签名并提供格式良好的表达式,您就可以使用 Queryable 上定义的各种扩展方法(如 Skip 等)实现类似的效果树。

Use this extension method:

public static IQueryable Take(this IQueryable source, int count)
{
    MethodCallExpression mce = Expression.Call(
        typeof(Queryable),
        "Take",
        new Type[] { source.ElementType },
        source.Expression,
        Expression.Constant(count)
    );
    return source.Provider.CreateQuery(mce);
}

You can achieve a similar effect with the various extension methods defined on Queryable like Skip and others, provided you match the method signatures and provide well-formed expression trees.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文