Как сравнить два списка без поиска одинаковых строк? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть два списка в решении 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);              
}

Ожидаемый результат: если задача A должна выполняться на станции 1, то программа должна искать машины на станции 1, которые имеют соответствующую функцию, например, «выполнить задание А». Это должно быть повторено для всех задач на всех станциях.

1 Ответ

1 голос
/ 03 июля 2019

// Предполагая, что у вас также есть глобальный список машин, скажем,

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

 }
...