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

C# 按字符串属性C排序对象列表#,c#,.net,C#,.net,可能的重复项: 如何按照字符串属性按字母顺序对对象列表进行排序 我尝试在属性上实现IComparable,但我只知道如何在第一个字符上排序(使用char) 编辑:下面是一些示例代码 class MyObject { public string MyProperty {get;set;} } List<MyObject> sampleList = new List<MyObject>(); MyObject sample = new MyObject

可能的重复项:

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

我尝试在属性上实现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);
}
类MyObject{
公共字符串MyProperty{get;set;}
}
List sampleList=新列表();
MyObject样本=新的MyObject();
sample.MyProperty=“Aardvark”;
MyObject sample2=新的MyObject();
sample2.MyProperty=“Zebra”;
样本列表。添加(样本);
添加(样本2);
sampleList.Sort();//或者类似的东西
foreach(样本列表中的变量项){
Console.WriteLine(item.MyProperty);
}
应该输出土豚和斑马(按字母顺序)


谢谢

您可以获得排序后的
IEnumerable
如下:

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);

您可以使用comparison委托,使用
排序(comparison-comparison)
重载来完成

list.Sort((a, b) =>  a.StringProperty.CompareTo(b.StringProperty));
var list=newlist();
//将SomeClass的一些实例添加到列表中
list.Sort((x,y)=>x.SomeProperty.CompareTo(y.SomeProperty));

确保包括System.Collections.Generic和System.Linq

    List<myItemType> lst = new List<myItemType>();
    return lst.OrderBy(i => i.StringPropertyName);
List lst=new List();
返回lst.OrderBy(i=>i.StringPropertyName);
将代码转换为C#

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

Dim Mylist作为新列表(ABC的)


您将得到一个结果,放在一个迭代器上。

这可能有助于Hi Jason-它返回一个可枚举实例,其中枚举将被排序。我想您可以执行lst=newlist(lst.OrderBy(…);
    List<myItemType> lst = new List<myItemType>();
    return lst.OrderBy(i => i.StringPropertyName);
    Dim a = From i In Mylist _
           Order By i.S Ascending