0

我有这堂课:

public class Myclass
{
    public int id;
    public string name;
}

和收藏:

Collection<Myclass> myCollection = new Collection<Myclass>();

我如何按 id 对这个集合进行排序????

4

6 回答 6

6

让你的类实现 IComparable,并定义

int CompareTo(MyClass other)
{
    return Id.compareTo(other.Id);
}

然后可以使用任何标准的排序函数。

于 2012-07-29T18:12:42.880 回答
3

linq是最直接的方式

var sorted = (from my in myCollection orderby my.id select my).ToList();
于 2012-07-29T18:12:45.090 回答
2

这样做lambda expreesion

myCollection.Sort((a,b) => a.id.CompareTo(b.id));

如果您的课程IComparable<T>以下列方式实现:

public class Myclass : IComparable<Myclass> {
   public int id;
   public string name; 

    public int CompareTo(Myclass myClass) {
        return id.CompareTo(myClass.id);
    }
}

然后,您可以直接调用Sort()方法:

   myCollection.Sort();

我和你一样使用了 myCollection,但它确实没有Sort()方法....相反,你可以将你myCollection的列表设置为列表,以便列表可以使用Sort()方法。

于 2012-07-29T18:15:25.400 回答
0

集合 myCl=新集合();

var res = myCl.OrderBy(mc=>mc.Id).ToList();
于 2012-07-29T18:14:03.607 回答
0
Collection<Myclass> ss = new Collection<Myclass>();
var ordered=ss.OrderBy(s => s.id).ToList();

现在 order 将是按 ID 排序的 MyClass 对象列表

于 2012-07-29T18:14:58.027 回答
0

我建议你使用 List 而不是 Collection。对于排序,您可以使用 Linq 运算符 OrderBy。

List<Myclass> items = new List<Myclass>();
// Add items here
items=items.OrderBy(item=>item.Id).ToList();
于 2012-07-29T18:15:37.110 回答