0

誰でもこれに対する最短のクエリを教えてください:

        var guestpartyids = db.CeremonyGuestParties.Where(p => p.CeremonyId == id)
                           .Select(p => p.GuestPartyId);
        List<GuestParty> guestparties = new List<GuestParty>();
        foreach (var party in guestpartyids)
        {
            guestparties.Add(db.GuestParties.Single(p => p.Id == party));
        }
4

2 に答える 2

2

これでうまくいくはずです。

guestparties.AddRange(
  from cgp in db.CeremonyGuestParties
  where cgp.CeremonyId == id
  join gp in db.GuestParties on cgp.GuestPartyId equals gp.Id
  select gp
);

コードが 1+N のクエリを実行する場合、これは 1 つのデータベース呼び出しになることに注意してください。ただし、Single() のように、一致する ID が 1 つだけであることは保証されません。とにかく、これはコードではなく、データベースに適用する必要があります。

于 2012-08-09T13:59:43.773 に答える
0

どうですか:

List<GuestParty> guestparties = from cgp in db.CeremonyGuestParties.
                                Where cgp.CeremonyId .id == id) 
                                select cgp.Guestparties.ToList();
于 2012-08-11T10:50:24.110 に答える