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 查询。但它不能确保只有一个匹配的 ID,就像 Single() 那样。无论如何,这应该在数据库上强制执行,而不是在代码中。

于 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 回答