我有两个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
的回复。他们总是一个身份。但是包含所有回复对象的对象,而不仅仅是.Parcel
aparcel
RecipientID
Parcel
bparcels
Parcel
Parcel
aparcel
我想创建一个新的Parcel
对象列表,aparcels
按CreatedOn
.
但是,如果Parcel
from (via )aparcels
引用了Parcel
from ,我想在列表中的from之后添加相应的from 。bparcels
RecipientID
Parcel
bparcels
Parcel
aparcel
然后我想检查引用“回复”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
对象。