0

在我的数据库中,我有一些类似这样的文本:'AVENUE GEORGES LEMAîTRE'。如您所见,'i' 字符上有一个 ^。

是否可以使用 LINQ 执行搜索并忽略此特殊字符。

所以我想搜索“AVENUE GEORGES LEMAITRE”并找到“AVENUE GEORGES LEMAITRE”。

var address = AddressRepository.Find(m => m.Street == "AVENUE GEORGES LEMAITRE").ToList();

可能的?如何?

谢谢。

4

2 回答 2

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();

除此以外

此博客条目可能会有所帮助:

它详细说明了如何从字符串中删除变音符号。

转到代码示例的底部。

一旦字符被替换,就可以比较字符串。

希望这可以帮助。

http://www.siao2.com/2007/05/14/2629747.aspx

于 2012-05-22T13:35:20.057 回答
0

您应该修改您的数据库模型以包含“规范”版本Street以及您向用户显示或接受的“实际”版本。例如,该规范版本可以全部为大写,删除所有变音符号,并规范化为特定的 Unicode规范化形式

假设您有一个执行此操作的方法Canonicalize(这可能是一个很好的起点),您将在保存地址时调用它:

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();
于 2012-05-22T13:04:13.373 回答