【发布时间】:2014-02-08 12:20:51
【问题描述】:
我正在使用System.Linq.Dynamic 使用字符串格式的 where 子句动态查询 IQueryable 数据源,如下所示:
var result = source.Entities.Where("City = @0", new object[] { "London" });
上面的例子运行良好。但现在我想查询 Guid 类型的外键属性,如下所示:
var result = source.Entities.Where("CompanyId = @0", new object[] { "838AD581-CEAB-4B44-850F-D05AB3D791AB" });
这不起作用,因为默认情况下 Guid 无法与字符串进行比较。而且我必须将 guid 作为字符串提供,因为它最初来自 json-request,而 json 不支持 guid。
首先,这是否是查询关系的正确方法,还是有其他语法可以做到这一点?
其次,如果要比较的实体属性是 guid 类型,我如何修改 Dynamic Linq 项目中的 Dynamic.cs 以自动将字符串转换为 guid?
【问题讨论】:
-
为什么将字符串作为参数而不是 Guid 传递?尝试使用
Guid.Parse并通过 guid -
正如我所写,查询来自 json 请求,我无法将可能的 guid 字符串转换为 guid。如果可以修改 Dynamic.cs 以检测我何时尝试将 Guid 与字符串进行比较然后进行转换,那将是最好的。
标签: c# sql expression-trees dynamic-linq