【发布时间】:2015-10-01 09:00:05
【问题描述】:
使用 Linq to Entities 时,生成的查询应该在 sql server 上运行(而不是将其枚举到内存中然后执行转换)
我目前有一个project,用于构建用于字符串搜索的表达式树。我目前正在探索将非字符串属性转换为字符串以启用对原始类型的搜索,例如integer 和Guid 等。
我目前尝试将Convert 提供的 lamda 属性转换为字符串,然后使用以下命令将其交换到表达式树中:
var stringProperty = Expression.Convert(property.Body, typeof (string));
System.InvalidOperationException : 'System.Int32' 和 'System.String' 类型之间没有定义强制运算符。
我是在尝试实现不可能的目标,还是有办法将 linq 扩展到实体以支持转换?
【问题讨论】:
-
确实很相似,但不幸的是他们的解决方案与 linq to entity 不兼容
-
有SqlFunctions.StringConvert,但它似乎只接受
Nullable<Decimal>。 -
快速搜索显示,目前使用 Linq to 实体无法将
Guid转换为字符串;关于integerSqlFunctions.StringConvert应该可以解决问题。用法示例参见here。可能可以转换为 Expression 版本。
标签: c# sql linq-to-entities expression-trees