将创建的列表项添加到另一个类

时间:2012-10-31 12:01:18

标签: c# list

我有一个项目,'Part'已创建

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'

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

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:0)

您正在添加一个部分列表,您的添加功能只需要一个部分。