[LINQ] Union 注意事項!

今天同仁詢問我用LINQ Select 新物件出來,是否可以 Union 在一起,直覺反映說:「可以呀!欄位一樣應該就可以吧!」,同仁回覆說他嘗試很久都無法成功Union,後來發現我們忽略了一個重要的地方,Code 如下:

//這段Code是虛擬碼,無法真的執行。
((from p in Amodel select new {
  Name=p.Name,
  ID=p.ID
})).Union((from p in Bmodel select new {
  Name=p.Name,
  ID=p.ID
}))

看起來很正常,但不知為何「Union」一直有紅色毛毛蟲,在自己的Code 也簡單試了一下,也可以正常編譯,

後來發現是「ID」這個欄位在Amodel string 但在Bmodel int ,導致無法Union。

因此提醒一下各位,Union 的時候,Select 出來的Column 型態要一樣唷!