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

时间:2011-07-22 13:16:23

标签: c# .net

  

可能重复:
  Sorting a list using Lambda/Linq to objects
  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);
}

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

谢谢!

6 个答案:

答案 0 :(得分:18)

您可以使用比较代理,使用Sort(Comparision<T> comparision)重载。

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

答案 1 :(得分:13)

您可以像这样获得排序IEnumerable<MyObject>

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

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

var sortedList = sortedQuery.ToList();

或者,您可以遍历这些项目:

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

答案 2 :(得分:4)

假设您的集合实现了IEnumerable界面,您只需在集合中调用OrderBy方法:

myCollection.OrderBy(c => c.Property);

答案 3 :(得分:2)

将代码转换为C#,

如果列表对象ABC具有列表中每个对象的字符串属性S,

Dim Mylist作为新名单(ABC)

    Dim a = From i In Mylist _
           Order By i.S Ascending

你将获得一个结果,放在一个迭代器上。

答案 4 :(得分:1)

var list = new List<SomeClass>();
// add some instances of SomeClass to list
list.Sort((x, y) => x.SomeProperty.CompareTo(y.SomeProperty));

答案 5 :(得分:0)

请务必包含System.Collections.Generic和System.Linq。

    List<myItemType> lst = new List<myItemType>();
    return lst.OrderBy(i => i.StringPropertyName);