用于select select内部的ObjectQuery lambda表达式

时间:2011-03-09 11:50:12

标签: 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 histories );

但它不起作用。 有人能指出我正确的方向吗?

由于

1 个答案:

答案 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);