-1

という名前のインターフェースがありますIEmployee。インターフェイスの実装に IComparer を実装する必要があります。

ここに私のコードがあります、

interface IEmployee
  {

      String Name {get;set;}
      DateTime DOB {get;set;}
  }

このような子クラスを作成しました

class Employee
  {

      String Name {get;set;}
      DateTime DOB {get;set;}
  }

今、私はこれに IComparer を実装する必要がありますMain

IComparer<IEmployee> comparerobject= // The comparer from the class.

そして、これを使用して、名前に基づいてcomparerコレクションを並べ替える必要があります。employee

var employees = new IEmployee[]{new Employee("....."),....}
Array.Sort<IEmployee>(employees , comparer);
4

3 に答える 3

9

代わりにIComparableを実装できます。次に、コードは次のようになります。

interface IEmployee : IComparable
{
    String Name { get; set; }
    DateTime DOB { get; set; }
}

class Employee : IEmployee
{
    public string Name { get; set; }
    public DateTime DOB { get; set; }

    public int CompareTo(object obj)
    {
        return this.Name.CompareTo(((IEmployee)obj).Name);
    }
}

次に、次のように配列を並べ替えることができます。

Array.Sort<IEmployee>(employees);
于 2013-05-10T03:42:52.283 に答える
9

できるよ

var sorted = employees.OrderBy(e => e.Name).ToArray();

または比較子を使用して

public class EmployeeComparer : IComparer<IEmployee>
    {
        public int Compare(IEmployee x, IEmployee y)
        {
            return x.Name.CompareTo(y.Name);
        }
    }

それからArray.Sort(employees, new EmployeeComparer());

于 2013-05-10T03:31:56.340 に答える