2
我有一個查詢,看起來像這樣的匿名類型的連接,它的工作原理,因爲它應該:多個LINQ使用lambda語法
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{ ... })
現在我需要一個額外的列添加到第二個連接,我嘗試了下面顯示的內容。到目前爲止,我並沒有在連接中添加新的列,但我打算(代碼中爲/* 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{ ... })
更新響應在下面的評論的鏈接:這個問題是有關這兩條中間線在這裏:
.Join(ColumnC,
join1 => new { join1.ColumnA.value },
ColumnC => new { ColumnC.value },
(join1, ColumnC) => new {join1, ColumnC})
現在我已經嘗試了以下兩件事情,沒有任何變化的結果:
join1 => new { join1.ColumnA.value },
ColumnC => new { value = ColumnC.value }
join1 => new { value = join1.ColumnA.value },
ColumnC => new { value = ColumnC.value }
我仍然無法弄清楚如何指定什麼比較。任何幫助將不勝感激。
http://stackoverflow.com/a/19135333/580053? – Dennis
感謝您的鏈接,@丹尼斯,但我不確定它是如何與這種情況相關的。看到我的更新 - 我是否可以忽略鏈接文章中的某些內容? – Kjartan
如果你發佈一段真實的代碼而不是僞代碼,它會更好。如果'ColumnA'是'IEnumerable'(或'IQueryable '),那麼是什麼意思'ColumnA.value'? –
Dennis