[問題] Join兩個資料表不同data type

看板C_Sharp作者 (Mr.不不)時間7年前 (2017/06/02 22:57), 7年前編輯推噓6(6013)
留言19則, 4人參與, 最新討論串1/1
請教各位版上的高手們, 小弟目前在串接一個專案的資料庫時, 主要是有三個table要join, 但join的是不同型別的資料,所以一直失敗.. (環境是asp.net mvc 串 mysql) 以下舉例 A_table --------------- Aid int PK,AI A00 string A01 string --------------- B_table --------------- Bid int PK,AI B00 string --------------- C_table --------------- Cid int PK,AI C00 string --------------- A_table.A00 對應的是 B_table.Bid A_table.A01 對應的是 C_table.Cid 所以我用LINQ會是 var from a in db.A_table join b in db.B_table on a.A00 equals b.Bid join c in db.C_table on a.A01 equals c.Cid 出來的結果是失敗,因為type不對, 但是無論我把 Bid.toString() 及 Cid.toString(), 或是 sqlfunctions.stringconvert((double)b.Bid) 都是 LINQ to Entities does not recognize the method 'System.String ToString()' 之類的解釋 礙於這個資料庫是一個運行很久且不能修改, 是否有方式可以解決這個卡了好久的問題... 再次感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.88.126 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1496415460.A.AFB.html

06/02 23:17, , 1F
為什麼A00 String會關聯到Bid int? 這DB沒問題嗎?
06/02 23:17, 1F
我也想知道為什麼當初設計的人要設成string...明明裡面的值都是int

06/02 23:36, , 2F
用LINQPad試了一下,用b.Bid.ToString()沒有問題啊
06/02 23:36, 2F
可是他在跑的時候就一直顯示tostring不能使用耶...

06/03 01:53, , 3F
06/03 01:53, 3F
所以因為我用EF才不能用嗎QQ

06/03 01:55, , 4F
06/03 01:55, 4F
我也有查到這個,可是我是用join這樣是不是不能用.. ※ 編輯: nonoman (114.136.121.205), 06/03/2017 11:00:22

06/03 12:08, , 5F
提供一下你的.net和EF等組件版本
06/03 12:08, 5F

06/03 12:08, , 6F
然後你先這樣試:
06/03 12:08, 6F

06/03 12:10, , 7F
from b in B_table select
06/03 12:10, 7F

06/03 12:11, , 8F
new { BidStr = b.Bid.ToString() };
06/03 12:11, 8F

06/03 12:12, , 9F
.ToList() 去執行,看看能不能跑
06/03 12:12, 9F

06/03 12:16, , 10F
我覺得應該是 MySQL 的關係
06/03 12:16, 10F
這個我有試過,也是一樣的QQ,EF版本6.1.3,.net4.5.2,感謝大大 ※ 編輯: nonoman (114.136.121.205), 06/03/2017 13:08:36

06/03 23:17, , 11F
要不要試試用舊版的mysql組件
06/03 23:17, 11F

06/03 23:20, , 12F
06/03 23:20, 12F

06/03 23:20, , 13F
試試先轉成AsEnumerable()
06/03 23:20, 13F

06/04 01:23, , 14F
不行的話你就把B,C select出來,把bid,cid轉string
06/04 01:23, 14F

06/04 03:52, , 15F
我去架了一個MySQL Server來測,測不出你說的問題呢...
06/04 03:52, 15F

06/04 03:56, , 16F

06/04 03:59, , 17F
試試把 MySql.Data 和 MySql.Data.Entity.EF6 更新一下?
06/04 03:59, 17F

06/07 14:25, , 18F
小弟linq用tostring也有這種狀況
06/07 14:25, 18F

06/07 14:26, , 19F
A或BC另外select new出來相對應型別再join看看
06/07 14:26, 19F
文章代碼(AID): #1PCNpahx (C_Sharp)