如何编写linq从不同的表中获取数据?

时间:2009-11-06 19:10:49

标签: linq

假设我有3个表:A(援助,......),B(投标,......)关系(援助,投标,......) 然后我有一个辅助参数,我想从b得到结果。如果使用SQL,则会像

select b.* from B join Relationship on b.bid = Relationship.bid
where relationship.aid = aid_param

如何编写与上述SQL相同结果的linq。 (在这种情况下,外键未正确创建)?

3 个答案:

答案 0 :(得分:1)

假设您已经使用设计器将表添加到LINQ数据上下文,并且您在数据库中定义了外键关系,或者在设计器中手动编码了关联,您应该只需引用B表和它的关系属性的EntitySet,按参数过滤,并检查是否有任何匹配。

var relationships = db.B.Any( b => b.Relationships.Where( r => r.aid == aid_param ) );

答案 1 :(得分:0)

var bQuery = from r in MyContext.Relationship
             where r.aid == aid_param
             select r.B;

如果你没有在模型中设置关系,那么你可以:

var bQuery = from b in myContext.B
             where myContext.Relationship
                .Any( r => r.aid == aid_param && b.bid == r.bid)
             select b;

答案 2 :(得分:0)

var output = 来自b
来自关系
where(b.bid = Relationship.bid,
relationship.aid = aid_param)