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
           }

編集:

会場とコンサートの関係は、コンサートには会場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

コンサートと会場の間で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 に答える