首页 > 解决方案 > 带有“åäö”的 Linq 查询返回表中的所有项目

问题描述

我的网站上有一个基本的搜索功能。一切正常,除了当用户只搜索这三个“åäö”中的一个字符时,查询会返回表中的所有项目。怎么会这样?字符是否转换为 t-sql 中的其他内容?

Dim sanitizedstring As String = helpclass.RemoveInvalidFileNameChars(txtSearch.Text, True)

Dim getArtists = From s In dc.tbl_artists _
                 Where s.ArtistName.ToString.ToLower.Contains(sanitizedstring) _
                 Select s

编辑:数据库的排序规则是Latin1_General_CI_AI.

标签: sql-servervb.netlinqtsqlcollation

解决方案


这种明显忽略某些字符的行为可能是由于整理。

由于您的排序规则不区分重音(AI),åäö因此 DB 会将其视为与aao文本查询相同。

这可能是问题的根源,(请注意,在不知道您的数据是什么的情况下,我们无法确定诊断结果)

解决方案 :

将数据库的排序规则更改为区分重音 (AS)。

例如,Latin1_General_CI_AS可能是一个明智的第一个测试。

更多信息


推荐阅读