我的数据库中有两个表:
TableA:
Id, ColA, ColB, Value IsSelectable
1 A B value1 False
2 C D value2 True
3 K M value3 True
TableB:
Id, ColA, ColB
1 A B
2 K M
现在我想创建一个Linq查询,从TableA中选择所有行:IsSelectable = true,其中ColA等于表B中的ColA,ColB等于表B中的ColB。
在上面的示例中,我想返回第3行,因为这是唯一满足我要求的行。
我试过这个:
from ta in _db.TableA
from tb in _db.TableB
where ta.IsSelectable == true
&& (ta.ColA == tb.ColA && ta.ColB == tb.ColB)
select ta;
上述查询的问题是,如果我尝试在调试器中显示其值,则查询会超时。
我还尝试加入两个表,我将TableA连接到TableB。但是当尝试从连接结果中选择TableA时,我无法创建新的TableA记录,因为我的Id是数据库创建的并且没有setter。
我该怎么做?
答案 0 :(得分:1)
试试这个
from ta in _db.TableA
from t in _db.TableB on new {a=ta.ColA,b=ta.ColB} equals new{a= t.ColA,b=t.ColB}
into tc from tb in tc
where ta.IsSelectable == true
select ta;