0

我已经开始研究基于 The Wayward WebLog http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx的 linq 提供程序。

我有这个代码

DbQueryProvider provider = new DbQueryProvider();
Query<Product> productQuery = new Query<Product>(provider);

IEnumerable<Product> preProductList = productQuery.Where(p => p.Id < 0).Take(4);
ICollection<Product> productList = preProductList.ToList();

我在寻找 Take(4) 时遇到了很多问题,我想将其翻译成 Top(4) sql 语句。

在我看来, .Take(4) 只是在表达式树中设置为常量,所以我无法知道它是否是 Take 函数。

你们中的任何人..以及关于如何根据表达式制作 TakeFinder 的想法吗?

4

1 回答 1

0

我没有尝试过,但我认为您应该将 where 子句替换为 OrderBy 子句。例如,如果它是按 ID 排序的,您将能够取其中的 4 个(如果您放置 OrderByDescending 而不是 OrderBy,这将是 4 个最高或最低的。

编辑:我快速浏览了一下,发现另一篇可能对您有用的帖子:

相当于 TOP 或 LIMIT/OFFSET 的 Linq to SQL 是什么?

万一你没看到。;)

于 2012-06-22T14:57:22.657 回答