1

这是我的抽象基类:

public abstract class BaseDataModel<T> : System.IComparable<T> where T : BaseDataModel<T>
{
    public int ID { get; set; }
    public int CreatedBy { get; set; }
    public DateTime CreatedOn { get; set; }
    public int? UpdatedBy { get; set; }
    public DateTime? UpdatedOn { get; set; }


    #region IComparable<T> Members

    public virtual int CompareTo(T other)
    {
        return ID.CompareTo(other.ID);
    }

    #endregion
}

此类表示 Person 并继承自 BaseDataModel 类。

public class Person : BaseDataModel<Person>
    {
        public string Name { get; set; }
    }

但是当我尝试使用 sort() 方法对列表进行排序时,它不起作用。它返回带有 2 个对象的排序列表,但这些对象中的所有属性都是空的。

    static void Main(string[] args)
    {
        List<Person> pList = new List<Person>();

        Person p = new Person();
        p.ID=2;
        p.Name="Z";
        pList.Add(p);

        Person p1 = new Person();
        p.ID = 1;
        p.Name = "A";
        pList.Add(p1);

        pList.Sort();





        Console.Read();

    }
}

这里有什么问题?

4

2 回答 2

3

你设置了p两次的属性;你从来没有设置p1.ID

于 2012-02-17T18:23:18.000 回答
2

问题在这里:

  Person p = new Person();
    p.ID=2;
    p.Name="Z";
    pList.Add(p);

    Person p1 = new Person();
    p.ID = 1;
    p.Name = "A";
    pList.Add(p1);

这应该是:

  Person p = new Person();
    p.ID=2;
    p.Name="Z";
    pList.Add(p);

    Person p1 = new Person();
    // Change properties of p1, not p!
    p1.ID = 1;
    p1.Name = "A";
    pList.Add(p1);
于 2012-02-17T18:25:09.327 回答