Как сравнить неточные строковые значения - PullRequest
1 голос
/ 26 сентября 2019

Я хочу сравнить два string значения, которые не являются точными. Например, я хочу сравнить Admin с Администратор , это должно вернуть true или должно быть выполнено.Я пытался contain, который не работает

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

Выше код не работает, если i.Name это «Администратор» и appname.ToLower() это «Администратор».Он просто возвращает ноль, но хочет, чтобы он обнаруживал значения.

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Если вы хотите проверить это обоими способами, поэтому, если A содержит B ИЛИ, если B содержит A, вы можете использовать оператор || (оператор OR), например:

a.Contains(b) || b.Contains(a)
1 голос
/ 26 сентября 2019

У вас есть строки неправильно (вы ищете 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();

Нечеткое совпадение на самом деле довольно сложный предмет, но по этой теме проводится много исследований.

...