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 関数を使用します。ただし、整数にはオーバーロードがないため、最初に倍精度浮動小数点または 10 進数に変換できます。
<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 to Entities クエリで Int を String に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。