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

如何编写linq以从不同的表中获取数据?,linq,Linq,假设我有3个表:A(援助,…),B(投标,…)关系(援助,投标,…) 然后我有一个aid作为参数,我想从b得到结果。如果使用SQL,将会像 select b.* from B join Relationship on b.bid = Relationship.bid where relationship.aid = aid_param 如何使用与上述SQL相同的结果编写linq。(在这种情况下,外键创建不正确) 如果模型中未设置关系,则可以: var bQuery = from b in my

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

select b.* from B join Relationship on b.bid = Relationship.bid
where relationship.aid = aid_param
如何使用与上述SQL相同的结果编写linq。(在这种情况下,外键创建不正确)

如果模型中未设置关系,则可以:

var bQuery = from b in myContext.B
             where myContext.Relationship
                .Any( r => r.aid == aid_param && b.bid == r.bid)
             select b;
如果模型中未设置关系,则可以:

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

假设您已经使用设计器将表添加到LINQ数据上下文中,并且您在数据库中定义了外键关系,或者在设计器中手动编码了关联,那么您应该能够引用B表及其关系属性的EntitySet,并通过参数进行过滤,并检查是否有匹配项

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

假设您已经使用设计器将表添加到LINQ数据上下文中,并且您在数据库中定义了外键关系,或者在设计器中手动编码了关联,那么您应该能够引用B表及其关系属性的EntitySet,并通过参数进行过滤,并检查是否有匹配项

var relationships = db.B.Any( b => b.Relationships.Where( r => r.aid == aid_param ) );
无功输出= 从b
来自关系
式中(b.bid=Relationship.bid,
relationship.aid=aid_param)var输出= 从b
来自关系
式中(b.bid=Relationship.bid,

relationship.aid=aid_param)

@tvanfosson他想选择B(如我的回答中所示),而不是relationship.Oops。我已更新以选择任何具有匹配关系的B。@tvanfosson他希望选择B(如我的回答中所示),而不是关系。Oops。我已更新以选择任何具有匹配关系的B。