Linq:获取另一个表中存在值的行

时间:2013-09-20 10:55:34

标签: c# linq

我的数据库中有两个表:

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。

我该怎么做?

1 个答案:

答案 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;