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

本文也發表於Harry’s Tech World

廣告