好的,为了解释这一点,我会尝试总结一下我在做什么
在某些时候,我在“供应商”类中创建了一个项目列表。在此示例中,部件列表将添加到主类中存在的供应商列表中。
在某些时候,我想要选择一个特定的部分添加到一个工作(工作类),这个部分已经创建,我只想把这个部分添加到工作中。
使用此部分添加了该部分: '在此之前,供应商已被选中'
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;
}
}
}
任何帮助将不胜感激。谢谢。
答案 0 :(得分:3)
我认为您正在寻找List.AddRange
m_partUsed.AddRange(foundPart)
答案 1 :(得分:1)
方法AddParts
创建一个新的Part。我会更改此方法,因此需要一个Part参数,然后将其添加到List。
public void AddParts(Part p)
{
m_partUsed.Add(p);
}
答案 2 :(得分: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) { ... }
只要参数列表不同,您可以拥有任意多个具有相同名称的方法。参数数量必须不同或参数类型必须不同。不考虑参数名称。
答案 3 :(得分:1)
您还可以执行以下操作:
j.AddParts(foundSup.SelectMany(s => s.SelectPart(selectedPart)))
虽然AddParts看起来像阿列克谢回答。
答案 4 :(得分: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
}
}
所有它正确读取我检查;)
我希望这很有用。非Unity C#