私はlinqクエリを作成して単一の最小値を出力しています。しかし、私は間違った最小値を取得し続けます。私はそれが参加の問題だと確信していますが、私は外部の参加を得ることができません。私は他の投稿に基づいていくつかの外部結合を試みましたが、何もできません。私はこの作業をするために外部結合に必要なテーブルが不明です。私は私ができるすべての組み合わせを考えてみました。Linqクエリで希望の結果が得られません
(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();
外の試みジョイン:
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;
問題は、私がではなく、スイマーのために、すべての結果の最小値を取得していますということです
ここで私が始めたクエリがありますそのスイマーの最小値と特定のイベント。
クラスの構造は次のようになります。
結果
public int ResultId
public int EntryId
public ICollection<Entry> Entry
public int EntryEventId
public ICollection<EntryEvent> EntryEvent
public TimeSpan Time
エントリ
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
私はまだlinq、ジョイントなどについて学んでいますので、説明をいただければ幸いです。前もって感謝します!
T-SQLで作業中のクエリを最初に作成し、そこから後方に作業します。 – Nkosi
私はSQLで同じ結果を得ています。 – Wyatt
このモデルは正しいですか? 'Entry'には多くの' EntryEvents' *と*多くの 'EntrySwimmers'があります。スイマーを特定の「EntryEvent」にどのようにリンクさせるつもりですか? –