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 つを取得できます (OrderBy の代わりに OrderByDescending を配置すると、最高または最低の 4 つになります)。

編集:私は簡単に見て、あなたに役立つかもしれない別の投稿を見つけました:

TOPまたはLIMIT/OFFSETに相当するLinq to SQLは何ですか?

あなたがそれを見なかった場合に備えて。;)

于 2012-06-22T14:57:22.657 に答える