有没有办法if
在linq
声明中设置?
return(from x in db.products where x.id == id
if(x.type == 1){
join y in db.category1 on x.idItem equals y.id
}else if(x.type == 2){
join z in db.category2 on x.idItem equals z.id
}
select New {....}).ToList();
Run Code Online (Sandbox Code Playgroud)
我知道这段代码错了但我的问题是:
实现这个的最佳方法是什么?
请注意,以下内容并不能解决 OP 遇到的问题,因为连接谓词取决于每个项目。如果整个查询的条件一次已知,则以下内容会有所帮助:
您拆分查询:
var part1 = from x in db.products where x.id == id select x;
var part2 =
b ? (from x in part1 join db.category1 select { x, joinedItem }) :
(from x in part1 join db.category2 select { x, joinedItem });
Run Code Online (Sandbox Code Playgroud)
很快就写好了。您需要使两个查询的匿名类型兼容。这是唯一重要的事情。