Dot-Net

LINQ to Entities 和 String.StartsWith 的問題

  • June 13, 2009

我正在嘗試使用 LINQ to Entities 建構搜尋頁面,但以下程式碼給了我一個關於 lte 無法辨識“Boolean StartsWith()”的執行時錯誤。程式碼編譯得很好。與將 StartsWith 過濾到儲存過程相比,我怎樣才能更好地解決這個問題?

   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;

我猜 EF 不支持採用 StringComparison 參數的 StartsWith 的重載。

它應該支持StartsWithEndsWithContains,所以也許你可以嘗試:

dp.LastName.StartsWith(searchTerm)

要麼:

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

然後確保它searchTerm也是小寫的。

引用自:https://stackoverflow.com/questions/990451