Рассмотрим этот массив
string[] presidents = {
"Adams", "Arthur", "Buchanan", "Bush", "Carter", "Cleveland",
"Clinton", "Coolidge", "Eisenhower", "Fillmore", "Ford", "Garfield",
"Grant", "Harding", "Harrison", "Hayes", "Hoover", "Jackson",
"Jefferson", "Johnson", "Kennedy", "Lincoln", "Madison", "McKinley",
"Monroe", "Nixon", "Pierce", "Polk", "Reagan", "Roosevelt", "Taft",
"Taylor", "Truman", "Tyler", "Van Buren", "Washington", "Wilson"};
Мой критерий группировки заключается в том, что имя длиной от 1 до 5 в одной группе и остальное в другой группе.
Я реализовал это с помощью этого производного класса
class MyLengthComparer:IEqualityComparer<Int32>
{
public Int32 GetHashCode(Int32 i)
{
return i<=5?1:6;
}
public Boolean Equals(Int32 i1,Int32 i2)
{
if(i1<=5 && i2<=5)
return true;
if(i1>5 && i2>5)
return true;
else
return false;
}
}
Теперь я запускаю это
IEnumerable<IGrouping<Int32, String>> groupVar = presidents.GroupBy(prez=>prez.Length,new MyLengthComparer());
foreach(IGrouping<Int32, String> grp in groupVar)
{
Console.WriteLine("******" + grp.Key + "******" );
foreach(String name in grp)
Console.WriteLine(name);
}
Console.ReadKey();
Я хочу знать значение двух функций IEqualityInterface. Я имею в виду, как на самом деле выполняется сравнение.
Какое значение имеет ключ в IGrouping, почему он показывает 5 и 6?