我试图找到一种方法来为子查询in子句创建Linq表达式树 .

SELECT * FROM x WHERE X.Id IN (SELECT XId FROM Y)

假设我有这个查询,我需要一种方法来创建where子句的System.Linq.Expression . 我有一个针对众多实体的通用存储库基础解决方案,我正在为其他过滤器动态创建表达式树,我想将其添加到已创建的表达式树中 .

我知道我可以做类似下面的事情,但它不够通用 .

var xIds = Y.Select(x => x.XId).ToList();
var final = X.Where(x => xIds.Contains(x.Id)).ToList();

但我需要这个会创建的Expression树 .

我玩这个链接:Creating a Linq expression dynamically containing a subquery,它似乎不起作用 . 我可能会遗漏一些东西,一直盯着这个 .

谢谢!