Ich arbeite an eine Linq-Abfrage erstellen, die einen einzelnen Mindestwert ausgibt. Allerdings bekomme ich immer den falschen Minimalwert. Ich bin mir sicher, dass es ein Join-Problem ist, aber ich kann keinen Outer-Join zur Arbeit bekommen. Ich habe einige Outer Joins basierend auf anderen Posts ausprobiert, kann aber nichts machen. Ich bin mir nicht sicher, an welchen Tisch ich mich anschließen muss, damit dies funktioniert. Ich denke, ich habe versucht, ich denke jede Kombination, die ich könnte.Linq-Abfrage nicht gewünschte Ergebnisse
Hier ist die Abfrage, die ich mit gestartet:
(from r in Results
join entry in Entries on r.EntryId equals entry.EntryId
join entryEvent in EntryEvents on entry.EntryId equals entryEvent.EntryId
join eswimmer in EntrySwimmers on entry.EntryId equals eswimmer.EntryId
where eswimmer.SwimmerId == 12027 && entryEvent.EventNumberId == 1233
select r.Time)
.Min();
eine äußere Verknüpfung Versuch:
from r in Results
join en in Entries on r.EntryId equals en.EntryId
join ev in EntryEvents on en.EntryId equals ev.EntryId into evJoined
join s in EntrySwimmers on en.EntryId equals s.EntryId into sJoined
from ev in evJoined.DefaultIfEmpty()
from s in sJoined.DefaultIfEmpty()
where (s.SwimmerId == 12027 && ev.EventNumberId == 1233)
select r.Time;
Das Problem ist, dass ich den Minimalwert von allen Ergebnissen für den Schwimmer bin immer eher als die Mindestwert für diesen Schwimmer UND das spezifische Ereignis.
Die Klassenstrukturen wie folgt aussehen:
Ergebnisse
public int ResultId
public int EntryId
public ICollection<Entry> Entry
public int EntryEventId
public ICollection<EntryEvent> EntryEvent
public TimeSpan Time
Einträge
public int EntryId
public ICollection<EntrySwimmer> EntrySwimmers
public Result Results
public ICollection<EntryEvent> EntryEvents
EntryEvents
public int EntryEventId
public int EventNumberId
public EventNumber EventNumbers
public int EntryId
public Entry Entry
EntrySwimmers
public int EntryId
public Entry Entries
public int SwimmerId
public Swimmer Swimmers
Ich lerne immer noch über Linq, Joins, usw., so dass Erklärungen geschätzt werden. Vielen Dank im Voraus!
Schreiben Sie zuerst eine Arbeitsabfrage in T-SQL und arbeiten Sie dann von dort rückwärts. – Nkosi
Ich bekomme die gleichen Ergebnisse in SQL. – Wyatt
Ist dieses Modell richtig? 'Entry' hat viele' EntryEvents' * und * viele 'EntrySwimmers'. Wie wirst du jemals einen Schwimmer mit einem bestimmten "EntryEvent" verbinden? –