如何實現IComparer<T>
這樣嗎?
public class MyComparer : IComparer<object>
{
public int Compare(object x, object y)
{
var type = x.GetType();
var type2 = y.GetType();
if (type == typeof(string) && type2 == typeof(string))
{
return String.Compare((string)x, (string)y);
}
else if (type.IsValueType && type2.IsValueType)
{
var comp = Comparer<double>.Default;
return comp.Compare(Convert.ToDouble(x), Convert.ToDouble(y));
}
else
{
return 0;
}
}
}
並使用它:
List<object> list = new List<object>() { 11.21, 323, 4, 3221, 221, 2, "asd" };
var qu = list.OrderBy(o => o, new MyComparer());
qu.ToList().ForEach((e) => Console.WriteLine(e));
你怎麼想的不同類型的項目進行排序?首先是:'11.21'還是'asd'? – MarcinJuraszek
你如何決定訂單...? –
我寧願將字符串排序在一起,並將double float int整合在一起。 –