我想使用列和变量值来应用join into
命令。
这里是代码(我遇到问题的查询的部分部分):
join p in db.user_tests on a.id equals p.test_id into g3
from x3 in g3.DefaultIfEmpty()
此代码有效,但我还需要通过user_id过滤db.user_tests
。我在函数内的变量userId中有user_id。
所以我决定按如下方式编写查询:
join p in db.user_tests on a.id equals p.test_id && userId equals p.user_id into g3
from x3 in g3.DefaultIfEmpty()
但我收到"Operator && cannot be applied to operands of type long and bool"
错误。
我尝试使用equal
,但它会引发一些错误。
我也试过了the two column join,但我在比较中使用了一个变量,所以它不起作用。
如何将连接同时用于列比较和变量?
答案 0 :(得分:1)
如果要加入多个属性,则应使用匿名对象:
join p in db.user_tests
on new { a.id, userId } equals new { id = p.test_id, userId = p.user_id } into g3
from x3 in g3.DefaultIfEmpty()
还要确保匿名对象具有相同类型和名称的属性。
但是userId
不是a
对象的一部分,将该变量用作连接的一部分是没有意义的。您只需加入test_id
并使用按user_id
过滤:
join p in db.user_tests.Where(x => x.user_id == userId)
on a.id equals np.test_id into g3
from x3 in g3.DefaultIfEmpty()