ObjectQuery лямбда-выражение для выбора внутри выбора - PullRequest
0 голосов
/ 09 марта 2011

Я хочу создать такой запрос, используя лямбда-выражение в 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 );

, но он не работаетМожет кто-нибудь указать мне правильное направление?

Спасибо

1 Ответ

1 голос
/ 09 марта 2011

Конечно - «в» не является частью C # в этом смысле.Попробуйте это, хотя:

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

Contains является подходящим методом для определения, находится ли значение в другой коллекции.Тем не менее, вы можете посчитать более целесообразным использовать здесь соединение.

Кроме того, я обеспокоен этим запросом:

, который не делаетt представляет 5 самых последних просмотренных историй - он представляет «несколько произвольных 5 просмотровых историй» (первые 5 возвращаются в некотором неопределенном порядке), а затем располагаются в наиболее недавнем первом порядке.* подозреваемый вы действительно хотите:

var histories = _entities.ProductViewHistories.OrderByDescending(p=>p.DateViewed)
                                              .Take(5);
...