我上课Message
public DateTime DateCreated {get; set;}
public int MessageId {get; set;}
我也有班级Activity
:
public DateTime DateCreated {get; set;}
public int ActivityId {get; set;}
在我的数据库中,我使用EF查询这两个项目:
db.Messages.ToList();
db.Activities.ToList();
我需要获取这两个列表,将它们推入单个列表,然后按DateCreated排序。我可以使用继承来使Activity和Message从一些通用的“Dated”类继承,但它感觉很乱,特别是因为这些类已经从其他类继承。
实现这一目标的正确方法是什么?
答案 0 :(得分:3)
在这种情况下你可以使用界面:
public interface IDateCreated
{
DateTime DateCreated { get; set; }
}
在您的课程中实现此界面,然后您将创建
var list = new List<IDateCreated>();
list.AddRange(db.Messages.ToList());
list.AddRange(db.Activities.ToList());
var result = list.OrderBy(x => x.DateCreated);
答案 1 :(得分:2)
带有界面
public interface IDatedObject
{
DateTime DateCreated {get;}
}
现在让两个类实现接口并存储在接口列表中。
答案 2 :(得分:1)
当合并到一个列表中时,所有元素应该具有相同的类型,而您没有中间类型,只需尝试匿名类型:
var list = db.Messages.ToList().Select(x=>new{x.DateCreated, Id = x.MessageId})
.Concat(db.Activities.ToList().Select(x=>new{x.DateCreated,Id = ActvitiyId})
.OrderBy(x=>x.DateCreated).ToList();
答案 3 :(得分:1)
您可以使用System.Collections.SortedList
,其添加方法包含键和值参数:MSDN