7

试图获取音乐会名称、日期和地点(存储在另一张桌子上),但它似乎不起作用,但它不断拉回 null。

var test = from f in db.Concert
           where f.Name.StartsWith(concertName)
           select new
           {
               f.Name,
               f.StartDateTime,
               venues = from v in db.Venues
                        where v.ID == f.VenueID
                        select v.Address
           }

编辑:

Venue 和 Concert 之间的关系是 Concert 具有与 Venue ID 相关的 VenueID。我需要传回一个字符串。就像是

foreach (var e in test)
{
   html += "<div> e.Name +":" + e.Address </div>;
}
4

3 回答 3

13

您可以使用群组加入来获取与音乐会相关的所有场地

var test = from f in db.Concert
           join v in db.Venues on f.VenueID equals v.ID into g
           where f.Name.StartsWith(concertName)
           select new
           {
               f.Name,
               f.StartDateTime,
               Venues = g.Select(x => x.Address)
           };

结果的使用:

foreach (var e in test)
{
   // e.Name
   // e.StartDateTime

   foreach(var address in e.Venues)
      // address
}
于 2013-01-14T18:29:46.577 回答
2

假设 Concerts 和 Venues 之间存在 1:1 的关系似乎是安全的。鉴于此,您可以join改用。

var test = from f in db.Concert
           join v in db.Venues on v.ID equals f.VenueID
           where f.Name.StartsWith(concertName)
           select new
           {
               f.Name,
               f.StartDateTime,
               v.Address
           };
于 2013-01-14T18:21:51.100 回答
0

如果您设置了外键关系,则无需手动查询场所。在这种情况下,您可以使用f.Venue.

于 2013-01-14T18:07:26.807 回答