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 to Entities 查询中将整数转换为字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!