LINQ查询未返回预期结果 如何修正匹配含test记录的查询语句
LINQ包含关键词查询无返回结果修正
问题背景
现有数据如下:
需求为筛选所有内容中包含test的记录,当前编写的查询未返回任何结果,原代码如下:
from recordings in Result where recordings.Contains("test") select recordings;
问题原因
查询失效是两个常见错误导致的:
- 未指定匹配字段:
string.Contains()是字符串类型的内置方法,你直接对recordings实体对象本身调用该方法逻辑不成立,必须明确指定要检索的、存储文本内容的具体属性(例如存储正文的Content字段、存储标题的Title字段)。 - 大小写匹配规则问题:C# 默认的字符串匹配是严格区分大小写的,从数据截图可以看到对应内容里的关键词是首字母大写的
Test,全小写的匹配条件无法命中对应记录。
修正代码
如果是查询内存中的集合(LINQ to Objects场景),指定匹配字段+忽略大小写即可,示例(假设存储内容的字段名为Content,替换成你自己的实际字段名就行):
from recordings in Result where recordings.Content.Contains("test", StringComparison.OrdinalIgnoreCase) select recordings;
如果是通过EF/EF Core查询数据库,多数数据库默认排序规则本身就不区分大小写,只需要修正字段引用即可:
from recordings in Result where recordings.Content.Contains("test") select recordings;
内容的提问来源于stack exchange,提问作者Dhruvi Parikh
相关产品推荐
相关产品推荐

