NFL のシーズン スケジュールを SQL Server DB に保存しています。Game
テーブルには、Week
(ゲームが行われるシーズンの週 [1-17] を参照)、AwayTeamID
、 などのフィールドがHomeTeamID
あります。およびフィールドはAwayTeamID
、テーブルHomeTeamID
を参照する外部キーです。Team
LINQ ステートメント (ASP.NET MVC 3 アプリ内) を使用して、テーブルのチーム名を含め、週ごとにゲームを返したいと考えていTeam
ます。私はこれを行う方法を少なくとも1つ知っていますが、具体的には(そしてもっとエレガントに望んでいます)、その週に対応する一連のゲームに関連付けられた毎週の結果を返したいと思います。オブジェクトのシーケンスnew { Game, AwayTeam, HomeTeam }
とドリルGame
週を取得するアイテム。目標を明確にしたかどうかわかりません...そうでない場合はお知らせください。明確にするよう努めます。
私は101 LINQ Samplesinto
で、ステートメント内でキーワードを使用して同様のものについて読んだjoin
ので、結果は一連の週になり、それぞれが独自の一連のゲームに関連付けられました。そのサイトの例を使用して、次のことを試しました。
string[] wks = { "1", "2", "3" };
var model =
from g in _db.NFLGames
join a in _db.NFLTeams on g.AwayTeamID equals a.NFLTeamID
join h in _db.NFLTeams on g.HomeTeamID equals h.NFLTeamID
select new TestGameModel { Game = g, AwayTeam = a.Name, HomeTeam = h.Name };
var weekgames =
from w in wks
join gm in model on w equals gm.Game.NFLWeek into gw
select new TestNflWeeklySchedule { Week = w, Games = gw };
foreach (var wg in weekgames) {
System.Diagnostics.Debug.WriteLine("NFL week: " + wg.Week + " number of games this week: " + wg.Games.Count());
foreach (var g in wg.Games) {
System.Diagnostics.Debug.WriteLine(" " + g.AwayTeam + " at " + g.HomeTeam + " [" + g.Game.DateTimeStart + "]");
}
}
コードは実行されますが、出力は
NFL week: 1 number of games this week: 0
NFL week: 2 number of games this week: 0
NFL week: 3 number of games this week: 0
どうやら、 に参加する 2 番目のクエリmodel
は、指定された週に発生するゲームと一致しません。また、2 つのクエリの代わりに、最初のクエリを 2 番目のクエリ内に本質的にネストする 1 つの LINQ ステートメントだけを試しました。それは私に同じ結果を与えました。
コードにどのようなエラーがあるか、またはこれが機能しない理由を誰か教えてもらえますか? 私は LINQ を初めて使用するので、単純なものである可能性が高いです。