0

我想在 ObjectQuery 中使用 lambda 表达式创建这样的查询

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 回答