2011-10-10 22 views
17

我有一列被定義爲EF中的整數(Code First)。我想用「開始」來搜索它。現在,我可以這樣做:如何在實體框架中查詢「開始於」整數列?

Where(x => SqlFunctions.StringConvert((double)x.AccountNumber).StartsWith(searchTerm)) 

然而,SqlFunctions.StringConvert()被轉換到T-SQL函數STR(),其中左墊這是我無法理解的原因造成的。

此外,我不能使用string.TrimStart(),因爲它不被實體框架支持。

任何人都可以借錢嗎?

回答

20

Trim()和LINQ TrimStart()工作實體,所以你可以使用:

Where(x => SqlFunctions.StringConvert((double)x.AccountNumber) 
    .TrimStart().StartsWith(searchTerm)) 

TrimStart轉化爲LTRIM在SQL。與searchTerm = 123例如,你得到這樣的東西:

WHERE LTRIM(STR(CAST([Extent1].[AccountNumber] AS float))) LIKE N'123%' 
+0

偉大的工作。感謝您的回答。 – User