我有一个对象列表" Deliveries&#34 ;,每个对象包含一些属性,另一个对象是Person,它代表可交付成果的买方。
问题是原始列表可以包含同一买家的多个交货。当我试图搜索特定的买家看到他的交付(使用二分搜索)我得到的只返回1个对象(1个交付)但如果有多个,我需要所有这些。
为了解决这个问题,我有一个方法可以返回特定买家的交货清单及其所有可交付成果。此方法属于类型 列出可交付的商品,并为买家名称提供一个参数字符串。
我无法弄清楚这种方法的实现,即使我认为我理解它应该如何工作。我在过去一小时左右一直在苦苦挣扎,这就是我到目前为止所做的......
public List<Deliverable> FindAllDeliverables(String buyersName)
{
int lowindex = 0;
int highindex = myDeliverables.Count - 1;
List<Deliverable> additionalList = new List<Deliverable>();
int m; // for middle index
while (lowindex <= highindex)
{ // P
m = (lowindex + highindex) / 2;
if (myDeliverables[m].Buyer.Name == buyersName)
{
if (additionalList.Count == 0)
{
additionalList.Add(myDeliverables[m]);
}
else
{
foreach (Deliverable d in additionalList)
{
if (d.ID == myDeliverables[m].ID)
{
/// do nothing >?
}
else
{
additionalList.Add(myDeliverables[m]);
}
}
}
}
else if (string.Compare(myDeliverables[m].Buyer.Name, buyersName) < 0)
{
lowindex = m + 1;
}
else if (string.Compare(myDeliverables[m].Buyer.Name, buyersName) > 0)
{
highindex = m - 1;
}
}
return additionalList;
}