LINQ to Entities 查詢中整數轉換為字符串的陷阱
在 LINQ to Entities 中,將整數轉換為字符串可能會遇到意想不到的挑戰。當嘗試將整數屬性(例如 ContactId)映射到新對像中的字符串屬性 Value 時,這一點尤為明顯。
常見方法及其局限性
第一種方法,直接將 c.ContactId 賦值給 Value,會導致錯誤“無法隱式轉換類型 'int' 為 'string'”。
第二種方法,使用 c.ContactId.ToString(),會遇到另一個障礙:“LINQ to Entities 中不支持 ToString”。這是因為 ToString 是一個在 CLR 對像上運行的方法,而不是在 LINQ 實體上運行。
使用 SqlFunctions 的優雅解決方案
在 Entity Framework (EF) 4.0 及更高版本中,可以使用 SqlFunctions.StringConvert 方法作為變通方案。但是,由於沒有整數的重載,您必須將整數強制轉換為雙精度型或十進制型:
<code class="language-csharp">var items = from c in contacts select new ListItem { Value = SqlFunctions.StringConvert((double)c.ContactId).Trim(), Text = c.Name };</code>
此解決方案有效地在 LINQ 表達式中將整數轉換為字符串,允許您將 ContactId 無縫映射到 Value 屬性。
以上是如何將整數轉換為LINQ中的字符串轉換為實體查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!