如何在不搜索相同字符串的情况下比较两个列表?

时间:2019-07-03 17:58:39

标签: c# class nested attributes

在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”。必须对所有工作站的所有任务重复此操作。

1 个答案:

答案 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

 }