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

Posted

技术标签:

【中文标题】按字符串属性C#对对象列表进行排序[重复]【英文标题】:Sorting object list by string property C# [duplicate] 【发布时间】:2011-10-11 01:23:33 【问题描述】:

可能的重复:Sorting a list using Lambda/Linq to objectsC# 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(按字母顺序)。

谢谢!

【问题讨论】:

也许这有助于***.com/questions/722868/… 【参考方案1】:

您可以使用 Comparision 委托,使用 Sort(Comparision&lt;T&gt; comparision) 重载来实现。

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

【讨论】:

【参考方案2】:

你可以像这样得到一个排序的IEnumerable&lt;MyObject&gt;

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

然后您可以将查询转换为这样的列表:

var sortedList = sortedQuery.ToList();

或者,您可以只遍历项目:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:
var list = new List<SomeClass>();
// add some instances of SomeClass to list
list.Sort((x, y) => x.SomeProperty.CompareTo(y.SomeProperty));

【讨论】:

【参考方案5】:

将代码转换为C#,

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

将我的列表调暗为新列表(ABC)

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

你会得到一个结果,放在一个迭代器上。

【讨论】:

【参考方案6】:

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

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

【讨论】:

嗨 Jason - 它返回一个可枚举的实例,枚举将被排序。我想你可以做 lst = new List(lst.OrderBy(...));

以上是关于按字符串属性C#对对象列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C# - 使用属性名称作为字符串按属性排序的代码[重复]

按特定属性对类列表进行排序[重复]

按属性对对象列表进行排序[重复]

按属性值对对象列表进行排序[重复]

Python:根据属性对对象列表进行排序

alpha 对具有相同整数值且应按升序排列的列表进行排序[重复]