LINQ to Entities和String.StartsWith的问题

时间:2009-06-13 10:01:58

标签: .net linq entity-framework linq-to-entities

我正在尝试使用LINQ to Entities构建搜索页面,但以下代码给出了关于l.t.e的运行时错误。无法识别'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;

1 个答案:

答案 0 :(得分:89)

我猜想EF不支持带有StringComparison参数的StartsWith的重载。

它应该支持 StartsWith EndsWith 包含,所以也许您可以尝试:

dp.LastName.StartsWith(searchTerm)

或:

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

然后确保searchTerm也是小写的。