我已经开始根据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的想法?
答案 0 :(得分:0)
我没有尝试过,但我认为你应该替换一个OrderBy的where子句。例如,如果按ID排序,您将可以使用其中的4个(如果您放置OrderByDescending而不是OrderBy,则将是4个最高或最低。
编辑:我快速浏览了一下,发现了另一篇可能对你有用的帖子:
What's the Linq to SQL equivalent to TOP or LIMIT/OFFSET?
如果你没有看到它。 ;)