После OrderBy
вы должны использовать ThenBy
.OrderBy(m => m.Name)
.ThenBy(m => m.CreationTime)
Но это не отвечает на ваш вопрос.Реализуйте IComparable<Type_of_m>
в типе m
, тогда вы можете сравнить с
.OrderBy(m => m)
class Type_of_m : IComparable<Type_of_m>
{
public string Name { get; set; }
public DateTime CreationTime { get; set; }
public int CompareTo(Type_of_m other)
{
int comp = Name.CompareTo(other.Name);
if (comp != 0) {
return comp;
}
return CreationTime.CompareTo(other.CreationTime);
}
}
Если вы хотите заказать элементы несколькими способами, тогдаиспользуйте Comparer, как объяснил Гдорон.Это хороший случай для вложенных классов.
class MyClass
{
public string Name { get; set; }
public DateTime CreationTime { get; set; }
public static readonly IComparer<MyClass> NameComparer = new MyNameComparaer();
private class MyNameComparaer : IComparer<MyClass>
{
public int Compare(MyClass x, MyClass y)
{
return x.Name.CompareTo(y.Name);
}
}
public static readonly IComparer<MyClass> DateComparer = new MyDateComparer();
private class MyDateComparer : IComparer<MyClass>
{
public int Compare(MyClass x, MyClass y)
{
return x.CreationTime.CompareTo(y.CreationTime);
}
}
}
Затем вы можете заказать так:
.OrderBy(m => m, MyClass.NameComparer)
или вот так
.OrderBy(m => m, MyClass.DateComparer)