我收到了错误:
LINQ to Entities does not recognize the method 'Int32 LastIndexOf(System.String)'
method, and this method cannot be translated into a store expression.
使用此代码判断一个人的姓氏是否以某些字符开头:
persons = persons.Where(c => c.FullName.IndexOf(" ") > 0 &&
c.FullName.Substring(c.FullName.LastIndexOf(" ")+1).StartsWith(lastNameSearch));
如何在不使用LastIndexOf()的情况下实现此目的?也许在使用ToList()?
从数据库中获取结果后,我必须检查这个答案 0 :(得分:7)
您受限于可以转换为SQL查询的canonical functions集,因此任何解决方案都必须通过规范函数提供来实现。
幸运的是,支持的功能之一是bool Contains(string)
实例方法。您可以将支票重写为
persons = persons.Where(c => c.FullName.Contains(" " + lastNameSearch));
这不像你当前的版本完全(因为它允许有多个名字的人匹配他们的第二个名字,而前者不会),但是它非常接近并且恕我直言是可以接受的。
当然,如果可能的话,将姓氏保留为数据库中的单独列会比任何一个好得多。