-1

好的,为了解释这一点,我将尝试总结我在做什么

在某些时候,我在“供应商”类中创建了一个项目列表。在此示例中,将零件列表添加到主类中存在的供应商列表中。

在某些时候,我想选择一个特定的部分添加到作业(作业类),这个部分已经创建,我只是想把它添加到作业中。

该部分已使用以下内容添加:“在此之前,已选择供应商”

Class Supplier
public void AddParts( int PartNum, string PartName, string PartDescription, decimal      Cost, decimal CostWithVAT, decimal Price, short Quantity)
{          
    m_partUsed.Add(new Part(PartNum, PartName, PartDescription, Cost, Price, Quantity));         
}

这是我打算如何实现的:

   private void btnAddJobPart_Click(object sender, EventArgs e)
    {
        //Select the job that the part is to be added too
        string selectedJob = cboJobPartRef.Text;
        List<Job> foundJob = Program.AuspexDo.SelectJob(selectedJob);

        //For the job found
        foreach (Job j in foundJob)
        {
            //Select the supplier
            string selectedSupplier = cboJobSupplier.Text;
            List<Supplier> foundSup = Program.AuspexDo.SelectSupplier(selectedSupplier);

            //For the supplier found, find the part to be added
            foreach (Supplier s in foundSup)
            {
                string selectedPart = cboJobParts.Text;
                List<Part> foundPart = s.SelectPart(selectedPart);

                //Get those part details

                //Add those details to the job

                j.AddParts //the part item here from the supplier list;


            }                   
        }
    }

任何帮助,将不胜感激。谢谢。

4

5 回答 5

3

我认为您正在寻找List.AddRange

m_partUsed.AddRange(foundPart)
于 2012-10-30T15:58:58.747 回答
1

该方法AddParts创建一个新零件。我将更改此方法,使其采用 Part 参数,然后将其添加到列表中。

public void AddParts(Part p)
{          
    m_partUsed.Add(p);         
}
于 2012-10-30T15:58:52.070 回答
1

为什么不将AddParts方法更改为(并调用它,AddPart因为它一次只添加一个部分):

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

然后,您可以添加一个部分

j.AddPart(somePart);

或使用对象初始化器

j.AddPart(new Part{Num=PartNum, Name=PartName, Description=PartDescription,
                   Cost=Cost, Price=Price, Quantity=Quantity});

或使用构造函数

j.AddPart(new Part(PartNum, PartName, PartDescription,
                   Cost, Price, Quantity));

如果您希望保留原始实现,您可以AddPart并排使用两种方法。这称为方法重载。然后,您可以选择添加零件对象或单个零件值。

public void AddPart(Part part) { ... }
public void AddPart(int PartNum, string PartName,
                    string PartDescription, decimal Cost,
                    decimal CostWithVAT, decimal Price, short Quantity) { ... }

只要参数列表不同,您就可以拥有任意多个具有相同名称的方法。参数的数量必须不同,或者参数类型必须不同。不考虑参数名称。

于 2012-10-30T16:05:27.143 回答
1

您还可以执行以下操作:

j.AddParts(foundSup.SelectMany(s => s.SelectPart(selectedPart)))

虽然 AddParts 看起来像 Alexei 的答案。

于 2012-10-30T16:06:41.650 回答
1

如果我正确理解 OP,他想将列表添加到列表中,...

好吧,我不了解 C#,但我了解 Unity C#

我很快就给你做了:

using UnityEngine;
using System.Collections;
using System.Collections.Generic; // THIS one is very important since it contains the List

public class TestScript : MonoBehaviour {
    List<int> ListOfIntegers = new List<int>();
    List<int> ListOfIntegers1 = new List<int>();
    List<List<int>> ListOfLists = new List<List<int>>();


    void Start(){
        ListOfIntegers.Add(1);
        ListOfIntegers1.Add(10);
        ListOfLists.Add(ListOfIntegers1);
        ListOfLists.Add(ListOfIntegers);
        Debug.Log((ListOfLists[0])[0]); // you get debug 10
    }
}

allso 它读取正确我检查了;)

我希望这很有用。到非 Unity C#

于 2014-02-08T00:39:10.543 回答