gpt4 book ai didi

c# - 使用 LINQ to Entities 获取最后一个字符索引

转载 作者:行者123 更新时间:2023-11-30 20:04:13 24 4
gpt4 key购买 nike

我收到错误:

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() 从数据库中获取结果后,我可能需要检查一下吗?

最佳答案

你受限于 canonical functions 的集合可以转换为 SQL 查询,因此任何解决方案都必须不超过规范函数提供的范围。

幸运的是,其中一个受支持的函数是 bool Contains(string) 实例方法。您可以将支票重写为

persons = persons.Where(c => c.FullName.Contains(" " + lastNameSearch));

这与您当前的版本完全不一样(因为它允许拥有多个名字的人匹配他们的第二个名字,而前者不会),但它非常接近并且恕我直言可以接受。

当然,如果可能的话,将姓氏作为单独的一列保留在数据库中会比这更好。

关于c# - 使用 LINQ to Entities 获取最后一个字符索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com