我想比较两个不完全相同的string
值例如,我想比较 Admin 和 Administrator ,这应该返回true或应该执行。
我尝试了contain
无效
var prodcut = lstProducts.Where(i => i.Name.ToLower().Contains(appname.ToLower())).FirstOrDefault();
如果i.Name
为'Admin'并且appname.ToLower()
为'Administrator',则上述代码不起作用。它只是返回null,但希望它应该检测值。
答案 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,则可以像这样使用||
operator(OR
运算符):
a.Contains(b) || b.Contains(a)