Sorting object list by string property C#
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicates:
Sorting a list using Lambda/Linq to objects
C# List<> OrderBy Alphabetical Order
号
如何按字符串属性按字母顺序对对象列表进行排序?
我尝试在属性上实现IComparable,但我只知道如何对第一个字符进行排序(使用char)。
编辑:这是一些示例代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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); } |
应输出aardvark和zebra(按字母顺序)。
谢谢!
您可以使用比较委托,使用
1 | list.Sort((a, b) => a.StringProperty.CompareTo(b.StringProperty)); |
您可以这样得到一个排序的
1 | var sortedQuery = sampleList.OrderBy(x => x.MyProperty); |
然后,您可以将查询转换为如下列表:
1 | var sortedList = sortedQuery.ToList(); |
号
或者,您只需迭代以下各项:
1 2 | foreach (var obj in sortedQuery) Console.WriteLine(obj.MyProperty); |
假设您的集合实现了
1 | myCollection.OrderBy(c => c.Property); |
。
将代码转换为C,
如果列表对象abc中的每个对象都有字符串属性s,
将我的列表变暗为(ABC的)新列表
1 2 | Dim a = From i In Mylist _ Order By i.S Ascending |
您将得到一个结果,放入一个迭代器。
1 2 3 | var list = new List<SomeClass>(); // add some instances of SomeClass to list list.Sort((x, y) => x.SomeProperty.CompareTo(y.SomeProperty)); |
。
请确保包括System.Collections.Generic和System.Linq。
1 2 |
。