我有一个项目,'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'
我不明白为什么找不到的部分不能作为列表项传递?
任何帮助都将不胜感激。
答案 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)
您正在添加一个部分列表,您的添加功能只需要一个部分。