Подобно этому вопросу, я пытаюсь перебрать только отдельные значения подстроки заданных строк, например:
List<string> keys = new List<string>()
{
"foo_boo_1",
"foo_boo_2,
"foo_boo_3,
"boo_boo_1"
}
Вывод для выбранных отдельных значений должно быть (выбрать произвольное значение, отличное от первой подстроки):
foo_boo_1 (первое)
boo_boo_1
I ' мы пытались реализовать это решение, используя IEqualityComparer
с:
public class MyEqualityComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
int xIndex = x.LastIndexOf("_");
int yIndex = y.LastIndexOf("_");
if (xIndex > 0 && yIndex > 0)
return x.Substring(0, xIndex) == y.Substring(0, yIndex);
else
return false;
}
public int GetHashCode(string obj)
{
return obj.GetHashCode();
}
}
foreach (var key in myList.Distinct(new MyEqualityComparer()))
{
Console.WriteLine(key)
}
Но в результате получилось:
foo_boo_1
foo_boo_2
foo_boo_3
boo_boo_1
Использование IEqualityComparer
Как удалить отдельные значения подстроки (foo_boo_2
и foo_boo_3
)?
* Обратите внимание, что «настоящие» ключи намного длиннее, что-то вроде «1_0_8-B153_GF_6_2», поэтому я должен использовать LastIndexOf.