gpt4 book ai didi

c# - Linq like 或其他结构

转载 作者:行者123 更新时间:2023-11-30 22:23:07 24 4
gpt4 key购买 nike

我的解决方案中有 DB oracle。我想在此查询中获得一些结果。查询示例:

select * from doctor where doctor.name like '%IVANOV_A%';

但如果我在 LINQ 上这样做,我得不到任何结果。

from p in repository.Doctor.Where(x => x.Name.ToLower().Contains(name))
select p;

其中 'name' 是字符串参数的变量。

Web 布局请求下一个字符串:“Ivanov a”或“A Ivanov”

但是我建议用户选择你的pattetn进行查询。

如果姓名由“名字”和“姓氏”组成但用户不知道您医生的全名,我如何才能获得“按姓名命名的患者”?

PS: 我被迫使用下一个 sql:

select * 
from doctor
where doctor.name like '%Ivano%' and doctor.name like '%Serg%';

最佳答案

你可以这样做

repository.Doctor.Where(x => x.Name.Contains(name))

在 linq-to-sql 和 linq-to-entities 中,这都被转换为 LIKE %...%。您可能甚至不需要 ToLower,因为比较完全是在数据库端进行的,因此使用了数据库的排序规则。您将不得不尝试,但默认情况下数据库通常不区分大小写。但如果需要,您可以使用 ToLower,它将转换为 SQL。

至于命名顺序问题。无论您获得什么搜索字符串,您都可以使用尾随空格和前导空格来找到匹配项。假设搜索字符串是“A B”。匹配项应该是((如“%A %”和“% B%”)或(如“% A%”)和“%B %”)。 (注意空格字符!)。您可以通过在空格字符处拆分字符串来解决这个问题。

关于c# - Linq like 或其他结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527499/

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