在 LINQ to Entities 查詢中將整數轉換為字符串:問題排查和解決方案
在 LINQ to Entities 查詢中嘗試將整數轉換為字符串時,可能會遇到錯誤。此問題主要是因為不支持隱式類型轉換。
在第一個代碼片段中:
<code class="language-csharp">var items = from c in contacts select new ListItem { Value = c.ContactId, //无法将类型“int”(ContactId)隐式转换为类型“string”(Value)。 Text = c.Name };</code>
編譯器會提示錯誤,因為它無法將整數 ContactId 隱式轉換為字符串 Value。
在 LINQ to Entities 中使用 ToString() 顯式將整數轉換為字符串也會失敗:
<code class="language-csharp">var items = from c in contacts select new ListItem { Value = c.ContactId.ToString(), //抛出异常:ToString 在 linq to entities 中不受支持。 Text = c.Name };</code>
解決方案:
為了解決這個問題,可以使用 EF v4 中的 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>
這種方法成功地將整數 ContactId 轉換為字符串,並允許您繼續進行 LINQ to Entities 查詢。
以上是如何將LINQ中的int轉換為實體查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!