我有两个List相同类型的Parcel。
public class Parcel
{
int Id {get;set;}
int RecipientID {get;set;}
DateTime CreatedOn {get;set;}
}
List<Parcel> aparcels = postFacade.GetParcels()
.OrderByDescending(x => x.CreatedOn);
List<Parcel> bparcels = postFacade.GetReplyParcels();
来自的Parcel对象aparcels是顶级项目。他们RecipientID从来都不是另一个Parcel身份。
中的Parcel对象是对 中的对象bparcels的回复。他们总是一个身份。但是包含所有回复对象的对象,而不仅仅是.ParcelaparcelRecipientIDParcelbparcelsParcelParcelaparcel
我想创建一个新的Parcel对象列表,aparcels按CreatedOn.
但是,如果Parcelfrom (via )aparcels引用了Parcelfrom ,我想在列表中的from之后添加相应的from 。bparcelsRecipientIDParcelbparcelsParcelaparcel
然后我想检查引用“回复”bparcels的任何其他Parcel对象Parcel并将其添加到列表中,bparcels递归检查直到找不到更多“回复”Parcel对象。
这就是我想出的:
List<Parcel> parcels = new List<Parcels>();
var replies = bposts.ToDictionary(u => u.RecipientID, p => p.Id);
foreach (var p in aparcels)
{
parcels.Add(p);
int commid = p.Id;
int val;
while (replies.TryGetValue(commid, out val))
{
parcels.Add(parcelFacade.GetById(val));
commid = val;
}
}
有什么办法可以提高此操作的性能吗?它可能会处理成百上千的Parcel对象。