Linq包含不考虑重音

时间:2015-09-28 16:43:24

标签: c# linq

我需要获取所有结果,其中文本包含忽略所有重音的特定单词。

现在我有以下内容:

filtered = result.Where(p => p.@string.ToString().ToUpper().Contains(word));

或简化版:

filtered = result.ToUpper().Contains(word));

如何制作"包含"语句忽略重音?

提前致谢

2 个答案:

答案 0 :(得分:9)

here借用类似的解决方案:

string[] result = {"hello there", "héllo there","goodbye"};

string word = "héllo";

var compareInfo = CultureInfo.InvariantCulture.CompareInfo;

var filtered = result.Where(
      p => compareInfo.IndexOf(p, word, CompareOptions.IgnoreNonSpace) > -1);

答案 1 :(得分:0)

您想使用StringComparison.InvariantCultureIgnoreCase枚举。

来源https://msdn.microsoft.com/en-us/library/system.stringcomparison(v=vs.110).aspx

filtered = result.Contains(word, StringComparison.InvariantCultureIgnoreCase);

然而,这只适用于LinqToObject。如果您使用的是LinqToSQL或LinqToEntityFramework或LinqToNHibernate,则无法使用。