[EntityFramework] 查詢結果將字串轉成列舉
如下的列舉是對應的Char型別
public enum TrCodes { A = 'A', O = 'O', S = 'S', T = 'T', P = 'P', }試著在查詢時將Entity的欄位轉成列舉
得到的結果是收到一個Linq的錯誤"LINQ to Entities 無法辨識方法 "
解決方法
查詢前先將列舉變成一個資料集var trCodes = from name in Enum.GetNames(typeof(TrCodes)) select (TrCodes)Enum.Parse(typeof(TrCodes),name);
再將原本查詢與列舉資料集作Join,完整如下
var trCodes = from name in Enum.GetNames(typeof(TrCodes)) select (TrCodes)Enum.Parse(typeof(TrCodes),name); var result = from o in this.db.INVMAH join c in trCodes on o.TR_CODE equals c.ToString() select new InvMahInfo { TRNO = o.TRNO, TrCode = c, };
用SqlProfiler觀察SQL,是將列舉集合Select成一個子查詢Table來使用