首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对自定义类List<T>进行排序

对自定义类List<T>进行排序
EN

Stack Overflow用户
提问于 2010-07-02 15:22:47
回答 10查看 144.8K关注 0票数 125

我想用date属性对我的列表进行排序。

这是我的自定义类:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Test.Web
{
    public class cTag
    {
        public int id { get; set; }
        public int regnumber { get; set; }
        public string date { get; set; }
    }
}

这是我要排序的List

代码语言:javascript
复制
List<cTag> Week = new List<cTag>();

我想按cTag类的date属性对List进行排序。日期的格式为dd.MM.yyyy

我读过一些关于IComparable接口的文章,但我不知道如何使用它。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-07-02 15:31:49

这样做的一种方法是使用delegate

代码语言:javascript
复制
List<cTag> week = new List<cTag>();
// add some stuff to the list
// now sort
week.Sort(delegate(cTag c1, cTag c2) { return c1.date.CompareTo(c2.date); });
票数 156
EN

Stack Overflow用户

发布于 2010-07-02 15:43:20

您的cTag类必须实现IComparable<T>接口,这一点是正确的。然后,您可以直接调用列表中的Sort()

要实现IComparable<T>接口,必须实现CompareTo(T other)方法。最简单的方法是调用要比较的字段的CompareTo方法,在本例中为date。

代码语言:javascript
复制
public class cTag:IComparable<cTag> {
    public int id { get; set; }
    public int regnumber { get; set; }
    public string date { get; set; }
    public int CompareTo(cTag other) {
        return date.CompareTo(other.date);
    }
}

但是,这不能很好地排序,因为这将对字符串使用经典排序(因为您将date声明为string)。因此,我认为最好的做法是重新定义类,并将date声明为DateTime,而不是string。代码几乎保持不变:

代码语言:javascript
复制
public class cTag:IComparable<cTag> {
    public int id { get; set; }
    public int regnumber { get; set; }
    public DateTime date { get; set; }
    public int CompareTo(cTag other) {
        return date.CompareTo(other.date);
    }
}

在创建类的实例时,您只需要做一件事就是将包含日期的字符串转换为DateTime类型,但这可以很容易地完成,例如通过DateTime.Parse(String)方法。

票数 53
EN

Stack Overflow用户

发布于 2010-07-02 15:34:34

对于这种情况,您还可以使用LINQ进行排序:

代码语言:javascript
复制
week = week.OrderBy(w => DateTime.Parse(w.date)).ToList();
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3163922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档