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

C# 如何比较不精确的字符串值,c#,string,compare,contains,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”,则上述代码不起作用。它只返回

我想比较两个不精确的
string
值,例如我想比较Admin和Administrator,这应该返回true或应该执行。 我尝试了
contain
,但它不起作用

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

如果
i.Name
为“Admin”且
appname.ToLower()
为“Administrator”,则上述代码不起作用。它只返回null,但希望它能够检测值。

字符串的位置不对(您正在
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();

这是一个相当复杂的课题,但是有很多关于这个课题的研究

如果您想双向检查,那么如果A包含B或B包含A,您可以使用(
运算符),如下所示:


您能否添加更多的样本,以及提到的不起作用的
means@sujithkarivelil-如果
i.Name
为管理员且
appname.ToLower()
为管理员,则上述代码不起作用。如果输入正确,
Admin
不包含
Administrator
,但是
Administrator
应该包含
Admin
na(公共逻辑)?那么,为什么不尝试使用
appname.ToLower().Contains(i.Name.ToLower())
lol呢?所以它必须是另一种方式。。。。只要使用
if(a.contains(b)| | b.contains(a))
@EpicKip-如果你愿意,我可以写下你的答案。Bcz你是第一个提出这个建议的。
a.Contains(b) || b.Contains(a)