关于.net:按字符串属性C#排序对象列表

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(按字母顺序)。

谢谢!


您可以使用比较委托,使用Sort(Comparision comparision)重载来完成它。

1
list.Sort((a, b) =>  a.StringProperty.CompareTo(b.StringProperty));

您可以这样得到一个排序的IEnumerable

1
var sortedQuery = sampleList.OrderBy(x => x.MyProperty);

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

1
var sortedList = sortedQuery.ToList();

或者,您只需迭代以下各项:

1
2
foreach (var obj in sortedQuery)
    Console.WriteLine(obj.MyProperty);


假设您的集合实现了IEnumerable接口,您可以简单地对集合调用OrderBy方法:

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
    List<myItemType> lst = new List<myItemType>();
    return lst.OrderBy(i => i.StringPropertyName);