0

ObjectQueryでラムダ式を使用してこのようなクエリを作成したい

SELECT *
FROM tableA
WHERE ID in (SELECT ID in tableB)

使ってみます

var histories = _entities.ProductViewHistories.Take(5).OrderByDescending(p=>p.DateViewed);
var products = _entities.Products.Where(p => p.ID in histories );

しかし、それは機能していません。誰かが私を正しい方向に向けることができますか?

ありがとう

4

1 に答える 1

1

もちろん、「in」はそのようにC#の一部ではありません。ただし、これを試してください。

var products = _entities.Products.Where(p => histories.Contains(p.ID));

Contains値が別のコレクション内にあるかどうかを検出するための適切な方法です。ただし、ここで結合を使用する方が適切な場合があります

また、私はこのクエリについて心配しています:

これは、最近表示された5つの履歴を表すものではありません。「任意の5つの表示履歴」(最初の5つは不確定な順序で返されます)を表し、最近の最初の順序で並べられます。

あなたが実際に望んでいると思います:

var histories = _entities.ProductViewHistories.OrderByDescending(p=>p.DateViewed)
                                              .Take(5);
于 2011-03-09T11:57:08.007 に答える