【问题标题】:Multiple JOIN in Linq-to-SQLLinq-to-SQL 中的多个 JOIN
【发布时间】:2019-04-04 18:45:13
【问题描述】:

我正在尝试在 linq-to-sql 中执行以下查询(连接 3 个不同的表):

select * from tbl_round r 
inner join tbl_election e on r.fk_election_id = e.election_id
inner join tbl_meeting m on m.meeting_id = e.fk_meeting_id

这是我到目前为止但不正确的内容:

from round in db.tbl_rounds
join meeting in db.tbl_meetings on election.fk_meeting_id equals meeting.meeting_id 
join election in db.tbl_elections on round.fk_election_id equals election.election_id 
select round;

我得到的错误是名称“选举”在当前上下文中不存在。

【问题讨论】:

  • 看来你的顺序错了——先把选举加入
  • 两个答案都正确
  • 是的,得到两个好的答案在 SO 上经常发生——我喜欢两个都投赞成票

标签: c# sql linq linq-to-sql


【解决方案1】:

您将不得不重新排序连接语句,可能像

from round in db.tbl_rounds
join election in db.tbl_elections on round.fk_election_id equals election.election_id
join meeting in db.tbl_meetings on election.fk_meeting_id equals meeting.meeting_id  
select round;

【讨论】:

    【解决方案2】:

    因为您在声明之前使用了“选举”。

    from round in db.tbl_rounds
    join meeting in db.tbl_meetings on -->election<--.fk_meeting_id equals meeting.meeting_id 
    join -->election<-- in db.tbl_elections on round.fk_election_id equals election.election_id 
    select round;
    

    在这种情况下,您需要更改查询中的顺序。

    查询应如下所示:

    from round in db.tbl_rounds
    join election in db.tbl_elections on round.fk_election_id equals election.election_id
    join meeting in db.tbl_meetings on election.fk_meeting_id equals meeting.meeting_id 
    select round;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-12
      • 2015-05-27
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      相关资源
      最近更新 更多