1

私はLinqの世界に不慣れで、必要なフィールドの追加に影響を与えるデータベースの制約により、次のSQLをlinqに変換する方法がわかりません。

select sp.SessionID,
    sp.SessionParticipationID,
    case when z.SessionParticipationID = sp.SessionParticipationID then 1 else 0 end as RecordedFL
from SessionParticipation sp
inner join (
    select sp1.SessionID,
        sp1.SessionParticipationID
    from Meeting.SessionParticipation sp1
    inner join RegistrantActivity ra on ra.SessionParticipationID = sp1.SessionParticipationID
    where ra.RegistrantID = 12345
) z on z.SessionID = sp.SessionID

エンティティは、SessionParticipation と RegistrantActivity です。

4

1 に答える 1

1

それは次のようなものでなければなりません

from sp in SessionParticipations
join z in
(from sp1 in MeetingSessionParticipations
join ra in RegistrantActivities on sp1.SessionParticipationID equals 
                                   ra.SessionParticipationID
where ra.RegistrantID = 12345
select sp1)
on sp.SessionID equals z.SessionID
select new { 
             sp.SessionParticipationID,
             RecordedFL = z.SessionParticipationID == sp.SessionParticipationID
                          ? 1 : 0
           }

Meeting.SessionParticipationが とは異なるスキーマの別のテーブルであると仮定するとSessionParticipation、そうでない場合、結合によって必要以上に複雑になります。(ただし、異なるスキーマの同一のテーブル名は...紛らわしいです)。

于 2012-05-11T20:39:27.683 に答える