在C#解决方案中,我有两个列表:一个用于工厂中的任务,另一个用于执行这些任务的机器。当要在工作站1上执行任务时,必须显示位于工作站1且能够执行任务的所有机器。任务和机器在它们各自的“任务”和“机器”类中声明。
我开始意识到“ foreach”循环无法识别其他列表中的项目。我不知道如何根据另一个列表中的条件在一个列表中启动查询。
“机器”类
class Machine
{
public string machineName { get; set; }
public int machineID { get; set; }
public int Station { get; set; }
public Function func{ get; set; }
public Machine(string name = "No Name", int machineid=0,
int stat = 0, string functionname = "No Function", bool contact = false)
{
machineName = name;
machineID = machineid;
Station = stat;
func = new Function (functionname, contact);
}
}
“任务”类
class Task
{
public string taskName { get; set; }
public int Station { get; set; }
public process(string name = "No Name", int stat = 0)
{
processName = name;
Station = stat;
}
}
主要
List<Task> taskList = new List<Task>();
var station1list = taskList.Where(m => m.Station==1).ToList();
foreach (var g in station1list)
{
Console.WriteLine("\nThe tasks at station 1: {0}",
g.taskName);
}
预期结果:如果要在工作站1上执行任务A,则程序应在工作站1上搜索具有相关功能的机器,例如: “执行任务A”。必须对所有工作站的所有任务重复此操作。
答案 0 :(得分:1)
//假设您也有一个全局计算机列表,例如
machineGlobalList
var station1list = taskList.Where(m => m.Station==1).ToList();
foreach (var g in station1list)
{
//get machines at station one
var machinesAtStation = machineGlobalList.Where(x => x.Station == g.Station).ToList();
//Call their function...
machinesAtStation.ForEach(x => x.func = new Function(para1,para2))//pass the respective parameters
}