Ich versuche, eine linke Outer-Join-Abfrage mit Linq auf 2 Tabellen schreiben, aber NULL-Referenz Ausnahme während der Laufzeit, wenn Nullwerte in der rechten Tabelle sind.Linke Outer-Join-Laufzeitfehler mit LINQ
Für alle MatchID-Werte wie in der Tabelle tbl_Match Tabelle tbl_UserBets enthält die Tabelle keine Werte für alle.
Create Table tbl_Match(
MatchID int primary key Identity,
TournamentID int Foreign key references tbl_Tournament(TournamentID),
Team1 int Foreign key references tbl_TournamentTeams(TeamID),
Team2 int Foreign key references tbl_TournamentTeams(TeamID),
StartTime DateTime not null,
MatchBetAmount int not null
);
SQL Tabelle Entwurf für tbl_UserBets Tabelle: Wenn also NULL-Wert kommt, ich bin immer meine Zeit Ausnahme
PFB LINQ-Abfrage,
string userID = "dfa3c0e7-2aa3-42ee-a7d3-803db902dc56";
var res2 = dbEntity.tbl_Match.Select(m => new
{
MatchID = m.MatchID,
Team1 = m.Team1,
Team2 = m.Team2,
UserForTeam1 = dbEntity.tbl_UserBets.Where(b => b.UserForTeam1 == userID).FirstOrDefault(b => b.MatchID == m.MatchID),
UserForTeam2 = dbEntity.tbl_UserBets.Where(b => b.UserForTeam2 == userID).FirstOrDefault(b => b.MatchID == m.MatchID)
});
foreach (var item in res2)
{
Console.WriteLine(item.MatchID + " " + item.Team1 + " vs " + item.Team2 + " " + item.UserForTeam1 == null ? " NA " : item.UserForTeam1.UserForTeam1);
}
SQL Tabelle Design für tbl_Match Tabelle
laufen :Mit der folgenden Abfrage in SQL bin ich in der Lage, die Ergebnisse richtig zu bekommen, Need t Mach das gleiche mit LINQ.
select DISTINCT(tbl_Match.MatchID),tbl_Match.Team1,tbl_Match.Team2,tbl_Match.StartTime,tbl_Match.MatchBetAmount,tbl_UserBets.UserForTeam1,tbl_UserBets.UserForTeam2,tbl_UserBets.UserForNoBets from tbl_Match left outer join tbl_UserBets on tbl_Match.MatchID = tbl_UserBets.MatchID and (tbl_UserBets.UserForTeam1 = 'dfa3c0e7-2aa3-42ee-a7d3-803db902dc56' or tbl_UserBets.UserForTeam2 = 'dfa3c0e7-2aa3-42ee-a7d3-803db902dc56')
Bitte lassen Sie mich wissen, welche Änderungen ich tun sollte, um das Problem zu beheben. Vielen Dank.
See Msdn verursachen: https : //code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng