如何比较不精确的字符串值

时间:2019-09-26 11:04:21

标签: c# string compare contains

我想比较两个不完全相同的string值例如,我想比较 Admin Administrator ,这应该返回true或应该执行。 我尝试了contain无效

 var prodcut = lstProducts.Where(i => i.Name.ToLower().Contains(appname.ToLower())).FirstOrDefault();

如果i.Name为'Admin'并且appname.ToLower()为'Administrator',则上述代码不起作用。它只是返回null,但希望它应该检测值。

2 个答案:

答案 0 :(得分:1)

您输入的字符串错误(您正在Adminstrator中寻找Admin

您可以通过以下两种方式进行检查:

 lstProducts.Where(i => 
     i.Name.ToLower().Contains(appname.ToLower()) ||
     appname.ToLower().Contains(i.Name.ToLower())
 ).FirstOrDefault();

或者只是比较前几个字符:

lstProducts.Where(i => 
    i.Name.ToLower().SubString(0,5) == appname.ToLower().SubString(0,5))
).FirstOrDefault();

Fuzzy matching实际上是一个非常复杂的主题,但是对此主题进行了大量研究。

答案 1 :(得分:1)

如果要同时检查两者,以便A包含B或B包含A,则可以像这样使用|| operatorOR运算符):

a.Contains(b) || b.Contains(a)