我想动态创建一个LINQ语句,该语句包括一个where语句,该语句必须根据页面列表中的项目进行扩展:
private IQueryable<WS_WebShopTreeNode> GetRootNodes(List<ShopTreePage> pages, IQueryable<WS_WebShopTreeNode> node_src)
{
var rootNodes = from tn in node_src
where tn.id_WebShopTreeNode_AsParent == null &&
tn.PageNo == 1 &&
tn.PageNo == 2 &&
tn.PageNo == 3 &&
//etc.
select tn;
}
ShopTreePage
只是一个枚举:
public enum ShopTreePage : byte
{
Unassigned = 0,
UserRole = 1,
Hardware = 2,
Software = 3,
Zubehoer = 4,
All = 5
}
我知道这可以通过表达式树来实现。不幸的是,我缺乏构建表达式树的知识。
答案 0 :(得分:1)
您忘了告诉我们哪个属性是ShopTreePage
,但我想它是PageNo
。
为什么您不能在这里简单地使用Contains
?
var rootNodes = from tn in node_src
where tn.id_WebShopTreeNode_AsParent == null
&& pages.Contains((ShopTreePage)tn.PageNo)
select tn;