在我的数据库中,我有一些类似这样的文字:'AVENUEGEORGESLEMAîTRE'。正如你所看到的,'i'字符上有一个^。
是否可以使用LINQ执行搜索并忽略此特殊字符。
所以我想搜索'AVENUE GEORGES LEMAITRE'并找到'AVENUEGEORGESLEMAîTRE'。
var address = AddressRepository.Find(m => m.Street == "AVENUE GEORGES LEMAITRE").ToList();
可能?怎么样?
感谢。
答案 0 :(得分:1)
尝试:
List<String> address = (from ad in addressRepository where string.Compare("AVENUE GEORGES LEMAITRE", ad.Street.ToUpperInvariant(),CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == 0 select ad.Street).ToList();
否则
此博客文章可能有所帮助:
详细介绍了如何从字符串中删除变音符号。
转到代码示例的底部。
替换字符后,可以比较字符串。
希望这有帮助。
答案 1 :(得分:0)
您应修改数据库模型,以包含Street
的“规范”版本以及您向用户显示或接受的“实际”版本。例如,这个规范版本可以全部大写,删除所有变音符号,并标准化为特定的Unicode normalization form。
假设您有一个方法Canonicalize
执行此操作(可能是a good place to start),您可以在保存地址时调用它:
var address = /* incoming data */
address.CanonicalStreet = Canonicalize(address.Street);
/* save the model */
您还可以在检索数据时使用它:
var street = "AVENUE GEORGES LEMAITRE";
street = Canonicalize(street);
var address = AddressRepository.Find(m => m.CanonicalStreet == street).ToList();