要明确,我不是指对EF电话的结果执行.Cast<T>
。
我试图在数字字段上实现部分搜索。
创建SQL脚本时,很容易将列转换为另一种数据类型:
SELECT Id
FROM Employees
WHERE CAST(Id AS VARCHAR) LIKE '%95%';
LINQ查询中是否有任何等价物?
我无法修改我查询的实体上的数据类型,而Id
仅用于演示目的。
答案 0 :(得分:4)
我不知道为什么ToString不起作用,但这对我有用。无需SqlFunctions:
false
答案 1 :(得分:3)
您可以使用SqlFunctions.StringConvert
:
var q = db.Employees
.Where(emp => SqlFunctions.StringConvert((decimal) emp.Id).Contains("95"));
答案 2 :(得分:1)
如果您无法找到SqlFunctions
解决方案,那么始终ExecuteQuery
var ids = db.ExecuteQuery<int>("SELECT Id FROM Employees WHERE CAST(Id AS VARCHAR) LIKE '%{0}%'", "95")
(这可能不完全正确参数。)