今天同仁詢問我用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 型態要一樣唷!