0

我有一个已创建的项目“零件”

public void AddPart(int partNumber, string partName, string partDescription, decimal cost, decimal price, short Quantity)
{         
   m_supplierParts.Add(new Part(partNumber, partName, partDescription, cost, price, Quantity));           
}

然后将零件添加到作业中

public void AddExistingPart(Part part)
{
    m_partUsed.Add(part);
}

然后我想做的是选择该部分并将其添加到另一个列表“工作”中。

这个想法是,将现有部件添加到工作中。

我选择了部分

public List<Part> SelectPart(String PartRef)
 {
        List<Part> PartSet = new List<Part>();

        foreach (Part p in m_supplierParts)
        {
            if (p.PartNumber.ToString().Equals(PartRef, StringComparison.OrdinalIgnoreCase))
                PartSet.Add(p);
        }
        return PartSet;
    }

但我随后想做的是将找到的部分添加到列表中:

string selectedPart = cboJobParts.Text;
List<Part> foundPart = s.SelectPart(selectedPart);

j.AddExistingPart(foundPart); //Adding the found part

'j' 是对工作的引用。

我遇到的错误是它说“foundPart”无法转换。

错误 1 ​​'Auspex.Job.AddExistingPart(Auspex.Part)' 的最佳重载方法匹配有一些无效参数

错误 2 参数 1:无法从“System.Collections.Generic.List”转换为“Auspex.Part”

我不明白为什么找到的部分不能作为列表项传递?

任何帮助,将不胜感激。

4

2 回答 2

3

您的j.AddPart函数接受单个Part对象作为参数。您的SelectPart函数返回一个List<Part>数据类型。

当您要添加返回的所有部分时,SelectPart您必须迭代:

foreach(Part part in s.SelectPart(selectedPart)) {
    j.AddPart(part);
}

或者当您的意图是SelectPart只返回一个Part对象时,您必须更改SelectPart为返回一个Part对象:

public Part SelectPart(String PartRef)
{
    return m_supplierParts.Single(p => p.PartNumber.ToString().Equals(
                                   PartRef, StringComparison.OrdinalIgnoreCase));
}
于 2012-10-31T12:05:52.137 回答
0

您正在添加一个零件列表,而您的 add 函数只需要一个零件。

于 2012-10-31T12:05:54.717 回答