这是我的抽象基类:
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
}
此类表示来自BaseDataModel类的Person和imherits。
public class Person : BaseDataModel<Person>
{
public string Name { get; set; }
}
但是当我尝试使用sort()方法对List进行排序时,它不起作用。它返回带有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();
}
}
这里有什么问题?
答案 0 :(得分:3)
您要设置p
两次的属性;你永远不会设置p1.ID
。
答案 1 :(得分: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);