按字符串属性C#排序对象列表

Jef*_*Pry 10 .net c#

可能重复:
使用Lambda/Linq将列表排序到对象
C#List <> OrderBy Alphabetical Order

如何通过字符串属性按字母顺序对对象列表进行排序.

我尝试在属性上实现IComparable但我只想出如何对第一个字符进行排序(使用char).

编辑:这是一些示例代码.

class MyObject {
    public string MyProperty {get;set;}
}

List<MyObject> sampleList = new List<MyObject>();    

MyObject sample = new MyObject();
sample.MyProperty = "Aardvark";

MyObject sample2 = new MyObject();
sample2.MyProperty = "Zebra";

sampleList.Add(sample);
sampleList.Add(sample2);

sampleList.Sort(); // or something similar

foreach (var item in sampleList) {
    Console.WriteLine(item.MyProperty);
}
Run Code Online (Sandbox Code Playgroud)

应输出Aardvark和Zebra(按字母顺序排列).

谢谢!

Geo*_*voy 18

你可以使用Comparision delegate,使用Sort(Comparision<T> comparision)重载来完成它.

list.Sort((a, b) =>  a.StringProperty.CompareTo(b.StringProperty));
Run Code Online (Sandbox Code Playgroud)


dle*_*lev 14

你可以IEnumerable<MyObject>像这样排序:

var sortedQuery = sampleList.OrderBy(x => x.MyProperty);
Run Code Online (Sandbox Code Playgroud)

然后,您可以将查询转换为如下列表:

var sortedList = sortedQuery.ToList();
Run Code Online (Sandbox Code Playgroud)

或者,您可以遍历项目:

foreach (var obj in sortedQuery)
    Console.WriteLine(obj.MyProperty);
Run Code Online (Sandbox Code Playgroud)