我有10個表格以不同的類型呈現給LINQ,但共享完全相同的屬性。當我試圖在它們上面運行的聯合,那麼編譯器告訴我說:LINQ聯合不同類型 - 動態轉換爲接口?
"Argument 2: cannot convert from 'System.Collections.IEnumerable' to 'System.Collections.Generic.IEnumerable<LINQPad.User.TelJun2011>'"
的代碼看起來像這樣
var jul = (from n in TelJul2011s select n);
var jun = (from p in TelJun2011s select p);
jun.Union(jul).Dump();
我做我的研究和理解,工會不能在不同的執行類型,我也明白,工會可以在匿名類型上執行,如果他們共享相同的屬性。這個選項對我來說不起作用,因爲我需要所有表中的所有屬性,並且不希望爲每個變量輸入相同的匿名類型10次。我希望編譯器根據所有屬性都相同的事實推斷它們都是相同的類型。
我已經嘗試使用AsQueryable()類型函數和「as」關鍵字轉換爲IEnumberable,Iqueryable,Datatable等。這似乎沒有爲我做詭計。
我想知道是否有某種方式通過動態轉換爲父類型來實現此目的。我無法編輯類的初始聲明,因此無法在它們上實現通用接口來投射。但是有什麼方法可以在使用它們時將類型轉換爲通用接口,而不需要編寫從每種類型到父接口的轉換?
感謝您的任何建議!
據我所知,你已經是唯一的選擇......並說你不能使用它們...所以基本上這些限制的答案是否定的。 – Yahia
是的,就是這樣。正確的解決辦法是有一個特定的非平板電腦類型(不是匿名),並選擇到這一個。來源原因顯然是破壞了數據庫設計。 – TomTom
不破壞數據庫設計。我正在評估使用linq作爲臨時分析解決方案來查詢多個來源的潛力。不同來源的聯盟是通常用於分析的基本SQL功能,即使我同意在生產或實際應用中這種做法很差。 – analystic