TakeFinder表达

时间:2012-06-22 14:47:24

标签: linq

我已经开始根据The Wayward WebLog查看linq提供程序了 http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx

我有这段代码

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的想法?

1 个答案:

答案 0 :(得分:0)

我没有尝试过,但我认为你应该替换一个OrderBy的where子句。例如,如果按ID排序,您将可以使用其中的4个(如果您放置OrderByDescending而不是OrderBy,则将是4个最高或最低。

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

What's the Linq to SQL equivalent to TOP or LIMIT/OFFSET?

如果你没有看到它。 ;)