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

本文关键字:列表 排序 对象 字符串 属性 | 更新日期: 2023-09-27 18:03:02

可能的重复:
使用Lambda/Linq将列表排序为对象
C#列表<gt;按字母顺序排序

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

我已经尝试在属性上实现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(按字母顺序(。

谢谢!

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

您可以使用Compavision委托,使用Sort(Comparision<T> comparision)重载来完成此操作。

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

您可以得到一个排序的IEnumerable<MyObject>,如下所示:

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

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

var sortedList = sortedQuery.ToList();

或者,您可以直接迭代项目:

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

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

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

将代码转换为C#,

如果你有一个列表对象ABC,列表中每个对象都有一个字符串属性S,

将我的列表分为新列表(ABC的(

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

将结果放入迭代器中。

请确保包含System.Collections.Generic和System.Linq.

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