LINQ to Entities和String.StartsWith的问题

.net entity-framework linq linq-to-entities

我正在尝试使用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也是小写的。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因