Linq select内部select的ObjectQuery lambda表达式
我想在ObjectQuery中使用lambda表达式创建如下查询Linq select内部select的ObjectQuery lambda表达式,linq,lambda,objectquery,Linq,Lambda,Objectquery,我想在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 histo
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 );
但它不起作用。
有人能给我指一下正确的方向吗
谢谢当然,“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);