In a previous post, I wanted to custom order a list of strings (List<string>). This is working fine now.
Now I would like a step further and sort a list of objects, having the mentioned strings as their name.
I thought this might be easy:
public class OwnObject : IComparable
public int CompareTo(object obj)
{
if (!(obj is OwnObject)) return 0;
string s1 = this.Name;
string s2 = (obj as OwnObject).Name;
...
}
...
}
... and in another file, do something like:
...ToList().Sort(OwnObject.CompareTo);
However, it's not that simple: I get the following compiler message:
Argument 1: cannot convert from 'method group' to 'System.Collections.Generic.IComparer<OwnObject>'.
I thought I was doing something similar like the CompareDinosByLength from the Microsoft learning website.
What am I doing wrong here?
If your
OwnObjectalready implementsIComparable(orIComparable<OwnObject>, then simply call the parameterlessList<T>.Sort()method.If you pass a method to
Sortlike in your example, then it must be compatible with theComparison<T>delegate, which expects two strongly typed parameters. You can use it whenTis not comparable or the default comparison is not preferable:Remark from the question author:
ToList().Sort()makes no sense: it should be: