我想在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 );
但它不起作用。 有人能指出我正确的方向吗?
由于
答案 0 :(得分: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);