if…then到concat sql查询,等价于linq-vbnet

mwg9r5ms  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(281)

这个问题在这里已经有答案了

linq where子句中的if条件(8个答案)
两年前关门了。
我有简单的代码:

Dim query as string = "SELECT id, red, yel, gre FROM table WHERE"
 if a then query=query + " red=true OR"
 if b then query=query + " yel=true OR"
 if c then query=query + " gre=true"
 if right(query,2)="OR" then query=left(query,len(query)-3)

如何在linq中实现等价?
更新:(我需要或运营商没有像许多其他例子在网站上)

jei2mxaa

jei2mxaa1#

如果a、b和c是布尔变量,则以下代码起作用:

Dim result = dbContext.Table();
result = result.Where(Function(r) (a And r.red) Or (b And r.yel) Or (c And r.gre));
result = result.ToList();

但如果你的意思是a,b和c是逻辑子句,你使用的是.net方法,比如 .ToString() 在它们中,您必须更改如下代码:

Dim result = dbContext.Table().ToList();
result = result.Where(Function(r) (a And r.red) Or (b And r.yel) Or (c And r.gre));

因为.net方法不能在dbcontext上运行,所以首先调用 ToList() 传输数据,然后可以对传输的数据使用all.net方法。

相关问题