次のようなクエリがありますが、これは正常に機能します。
ColumnA
.Join(ColumnB,
ColumnA => ColumnA.value,
ColumnB => ColumnB.value,
(ColumnA, ColumnB) => new {ColumnA, ColumnB})
.Join(ColumnC,
join1 => join1.ColumnA.value,
ColumnC => ColumnC.value,
(join1, ColumnC) => new {join1, ColumnC})
.Join(ColumnD,
join2 => join2.ColumnC.Value,
kobling => ColumnD.Value,
(join2, jk1Kobling) => new{ ... })
ここで、2 番目の結合に追加の列を追加する必要があり、以下に示すものを試しました。まだ、結合に新しい列を実際に追加していませんが、(/* new col */
コード内で) 追加する予定でした。問題は、Linq が明らかに型を推測できないことです。結合のためだけに特定のタイプを作成する以外に、この問題を回避する簡単な方法はありますか?
エラー:
The type arguments for method
'System.Linq.Queryable.Join<TOuter,TInner,TKey,TResult>( ...) cannot
be inferred from the usage. Try specifying the type arguments explicitly.
私が実行しようとしているコード:
ColumnA
.Join(ColumnB,
ColumnA => ColumnA.value,
ColumnB => ColumnB.value,
(ColumnA, ColumnB) => new {ColumnA, ColumnB})
.Join(ColumnC,
join1 => new {join1.ColumnA.value, /* new col */ },
ColumnC => new {ColumnC.value, /* new col*/ },
(join1, ColumnC) => new {join1, ColumnC})
.Join(ColumnD,
join2 => join2.ColumnC.Value,
kobling => ColumnD.Value,
(join2, jk1Kobling) => new{ ... })
以下のコメントのリンクに応じて更新します。問題は、ここの中央の 2 行に関連しています。
.Join(ColumnC,
join1 => new { join1.ColumnA.value },
ColumnC => new { ColumnC.value },
(join1, ColumnC) => new {join1, ColumnC})
結果に変更を加えることなく、次の2つのことを試しました。
join1 => new { join1.ColumnA.value },
ColumnC => new { value = ColumnC.value }
join1 => new { value = join1.ColumnA.value },
ColumnC => new { value = ColumnC.value }
何を比較するかを指定する方法がまだわかりません。どんな助けでも大歓迎です。