using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ListSort
{
class Program
{
static void Main(string[] args)
{
List<C> L = new List<C>();
L.Add(new C { n = 1, s = "b" });
L.Add(new C { n = 3, s = "a" });
L.Add(new C { n = 2, s = "c" });
// 方法1 使用Comparison<T>委托。下面代码使用的是lamda表达是。也可以使用匿名委托之类的,效果是一样的。
L.Sort((left, right) =>
{
if (left.n > right.n)
return 1;
else if (left.n == right.n)
return 0;
else
return -1;
});
// 方法2 使用IComparer<T>接口。
L.Sort(new CComparer());
// 方法3 除以上两种方法以外还可以使用另一种方法,在C类中实现IComparable<T>
L.Sort();
L.ForEach((c) =>
{
Console.WriteLine(c.n);
});
Console.Read();
}
}
public class C : IComparable<C>
{
public int n;
public string s;
public int CompareTo(C other)
{
if (this.n > other.n)
return 1;
else if (this.n == other.n)
return 0;
else
return -1;
}
}
public class CComparer : IComparer<C>
{
public int Compare(C left, C right)
{
if (left.n > right.n)
return 1;
else if (left.n == right.n)
return 0;
else
return -1;
}
}
}
方法4:
List<C> L = new List<C>();
L.Add(new C { n = 1, s = "b" });
L.Add(new C { n = 3, s = "a" });
L.Add(new C { n = 2, s = "c" });
//我想按照C的n来排序,直接这样sort会出错,因此请教
//Sort(Comparison<T>),Sort(IComparer<T>)怎么写
//请直接修改Sort或者增加其他代码,不要改动其他代码。
var query = from a in L
orderby a.n descending//descending 可以不要descending 排序方向
select a;
L = query.ToList();搜索
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ListSort { class Program { static void Main(string[] args)