How do I use a custom comparer with the Linq Distinct method?

我与影子孤独终老i 提交于 2019-11-29 13:18:47
Peter Davidsen

You're implementing your comparer as an IComparer<T>, the LINQ method overload requires an implementation of IEqualityComparer:

private class GribulatorComparer : IEqualityComparer<Gribulator> {
  public bool Equals(Gribulator g1, Gribulator g2) {
    return g1.ID == g2.ID;
  }
}

edit:

For clarification, the IComparer interface can be used for sorting, as that's basically what the Compare() method does.

Like this:

items.OrderBy(x => new ItemComparer());

private class ItemComparer : IComparer<Item>
{
    public int Compare(Item x, Item y)
    {
        return x.Id.CompareTo(y.Id)
    }
}

Which will sort your collection using that comparer, however LINQ provides a way to do that for simple fields (like an int Id).

items.OrderBy(x => x.Id);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!