2012-10-31 61 views
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); 
} 

我再想做「部分」選擇該部分並將其添加到另一個列表'Job'中。

這個想法是,將一個現有的部分添加到工作中。

我選擇了部分

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'

我不明白爲什麼找到的部分不能作爲列表項傳遞?

任何幫助,將不勝感激。

+0

看不到你在哪裏調用'AddExistingPart' – sll

+0

已編輯,改變了方法的名稱,但沒有改變它的添加。 – Wizard

回答

3

您的j.AddPart函數接受一個單一的Part對象作爲參數。 您的SelectPart函數返回List<Part>數據類型。

當你想添加你必須遍歷由SelectPart返回的所有部分:

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

或者當你的意圖是SelectPart只是返回一個Part對象,你必須改變SelectPart回單Part object:

public Part SelectPart(String PartRef) 
{ 
    return m_supplierParts.Single(p => p.PartNumber.ToString().Equals(
            PartRef, StringComparison.OrdinalIgnoreCase)); 
} 
+0

你可能會重載'AddPart(列表)',那麼它會接受你的列表,並且必須像Jan說的那樣迭代。 – Bmo

+0

我不想嚇唬你,但我現在可以吻你。這就是我以後,謝謝。 – Wizard

0

您正在添加部件的列表,您的add函數只需要一個部件。

相關問題