我有一个在EF (Code First)中定义为整数的列。我想用"以…开头"来搜索现在,我可以这样做:
Where(x => SqlFunctions.StringConvert((double)x.AccountNumber).StartsWith(searchTerm))
然而,SqlFunctions.StringConvert()
被转换为T-SQL函数STR()
,由于超出我理解的原因,它左填充结果。
另外,我不能使用string.TrimStart()
,因为它不支持实体框架。
Trim()
和TrimStart()
在LINQ to Entities中工作,所以你可以使用:
Where(x => SqlFunctions.StringConvert((double)x.AccountNumber)
.TrimStart().StartsWith(searchTerm))
TrimStart
在SQL中转换成LTRIM
。例如,使用searchTerm
= 123,您可以得到如下内容:
WHERE LTRIM(STR( CAST( [Extent1].[AccountNumber] AS float))) LIKE N'123%'