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ように変更する必要があります。SelectPartPart

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

追加機能が1つの部分のみを期待しているのに対し、部分のリストを追加しています。

于 2012-10-31T12:05:54.717 に答える