2009-01-31 63 views
1

無論採用哪種方式,在Linq to Sql中對枚舉值使用條件運算符時似乎出了點問題。例如Linq to Sql枚舉和條件運算符

var ret = from listings in db.Listings 
    select new Listing 
    { 
    ID = listings.ID, 
    //etc 
    OrderStatus = listings.OrderItems.Count > 0 
    ? listings.OrderItems.First().Order.OrderStatus : OrderStatus.NotCheckedOut 
}; 

System.Data.SqlClient.SqlException:轉換 nvarchar的值 '帶電' 到數據類型 INT ..

噹噹我離開的枚舉字段 轉換失敗因爲nvarchar映射到一個字符串,我得到類似的轉換錯誤。如何解決這個問題?

+0

順便說一句,它工作正常時,沒有條件所以將nvarchar轉換爲int不是一個問題? – 2009-01-31 21:15:49

+0

什麼是「Charged」nvarchar? – 2009-02-01 22:05:27

回答

1

這有效,也許還有更好的方法呢?

var ret = from listings in db.Listings 
let ordS = listings.OrderItems.Count > 0 ? 
         listings.OrderItems.First().Order.OrderStatus.ToString() : OrderStatus.NotCheckedOut.ToString() 
    select new Listing 
    { 
    ID = listings.ID, 
    //etc 
    OrderStatus = (OrderStatus)Enum.Parse(typeof(OrderStatus), ordS) 
};