按字符串属性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<T> comparision)
重载来实现。
list.Sort((a, b) => a.StringProperty.CompareTo(b.StringProperty));
【讨论】:
【参考方案2】:你可以像这样得到一个排序的IEnumerable<MyObject>
:
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以上是关于按字符串属性C#对对象列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章