2009-06-13 104 views
39

我試圖建立一個使用LINQ to Entities的搜索頁面,但下面的代碼給我一個關於l.t.e的運行時錯誤。不識別'Boolean StartsWith()。代碼編譯得很好。我怎樣才能解決這個問題比將StartsWith過濾出來存儲到一個存儲過程更好?LINQ to Entities和String.Starts問題

return from dp in dents.DirectoryPersonEntrySet 
      where 
       ((dp.LastName.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       (dp.Department.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       dp.Extension.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) 
      select dp; 
+0

你可以發佈'下面的代碼'嗎?或者是主題完整的代碼?你的意思是String.StartsWith而不是Boolean.StartsWith? – 2009-06-13 10:16:31

+0

@Rutger,謝謝,我很快就發送並忘記了代碼。我還修復了簽名。 – ProfK 2009-06-13 10:41:42

回答

77

我想EF不支持StartsWith的重載,它接受StringComparison參數。

應該支持StartsWith的endsWith包含,所以也許你可以試試:

dp.LastName.StartsWith(searchTerm) 

或:

dp.LastName.ToLower().StartsWith(searchTerm) 

,然後確保searchTerm也是小寫。