使用二分查找返回另一个列表中的对象列表

时间:2016-05-26 11:36:38

标签: c# list

我有一个对象列表" 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;

}

0 个答案:

没有答案