Сортировка списка с двумя аргументами - PullRequest
0 голосов
/ 13 мая 2018

У меня проблема.У меня есть функция (которая используется почти везде)

       public void Transfusion(PatientQueue patientQ, List<Event> scheduler)
    {
        Console.Write("\n### TRANSFUSION ###\nBefore Transfusion: " + BloodLevel);
        var p1 = patientQ.RemovePatient();            // Take 1st patient from Queue and get him into var p1 
        Console.Write("\tNeed " + p1.BloodUnits + " blood units..");
        // Remodeling of scheduler, making UT units first in scheduler
        SortedByType(scheduler);
        Console.WriteLine("\n\nPOSORTOWANY SCHEDULER: \n\n");
        ShowScheduler(scheduler);
        for (int i = 0; i < p1.BloodUnits; i++)
        {
            BloodStorageList.RemoveAt(0); // Removes blood Unit from the System
            scheduler.RemoveAt(0); // Removes information about utilisation from Scheduler
        }
        Console.WriteLine("\n\nPO USUNIECIU: \n\n");
        ShowScheduler(scheduler);
        BloodLevel = BloodLevel - p1.BloodUnits; // Reduce BloodLevel
        Console.WriteLine("\tAfter Transfusion: " + BloodLevel);
        Sorted(scheduler);
    }

Сейчас давайте сосредоточимся на планировщике и сортировке.Я хочу SortByType.Это моя функция (она работает нормально)

        scheduler = scheduler.OrderBy(a => a.Type).ThenBy(a => a.EventTime).ToList();
        foreach (var schedul in scheduler) Console.WriteLine($"{schedul.Type} : {schedul.EventTime}");
        Console.Read();

Итак, давайте посмотрим на консоль. НАЖМИТЕ ЗДЕСЬ Похоже, что в функции все работает Ok, но когда я хочу продолжитьв планировщике вещи, которые происходят внутри функции, не работают.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 13 мая 2018

Звучит так, как будто вы хотите разделить списки, но вы можете управлять ими как единым целым. Другими словами, вы хотите, чтобы тип сортировался индивидуально и помещался в EventTime, который также сортируется самостоятельно. Один из способов сделать это (что может быть, а может и не быть лучшим способом, который я признаю), состоит в том, чтобы отсортировать их каждый в список и добавить их обратно во вновь отсортированный список, которым можно управлять.

Я привел пример, где я сортирую людей по имени и паролю. Очевидно, что модель Person для этого примера ужасна, но это то, что я уже поцарапал, поэтому я использовал ее.

В этом примере я сначала сортирую людей по Имени и ссылаюсь на них, затем я сортирую людей по Паролю и ссылаюсь на это. Наконец, я создаю новый список людей и добавляю каждого человека в список по отсортированному имени и паролю. Если это не то, что вы ищете или просите, пожалуйста, дайте мне знать, и я удалю ответ.

using System;
using System.Collections.Generic;
using System.Linq;

namespace Question_Answer_Console_App
{
    public class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            var people = new List<Person>()
            {
                new Person() { Name = "Mathew", Password = "2345" },
                new Person() { Name = "Mathew", Password = "1234" },
                new Person() { Name = "John", Password = "5678" },
                new Person() { Name = "Mark", Password = "5678" },
                new Person() { Name = "Luke", Password = "0987" },
                new Person() { Name = "John", Password = "6534" }
            };

            var names = people.OrderBy(person => person.Name).Select(person => person.Name).ToList();
            var passwords = people.OrderBy(person => person.Password).Select(person => person.Password).ToList();
            var sortPeople = new List<Person>();
            for (int i = 0; i < names.Count(); i++) sortPeople.Add(new Person() { Name = names[i], Password = passwords[i] });  

            foreach (var person in sortPeople) Console.WriteLine($"{person.Name} : {person.Password}");
            Console.Read();
        }
    }
    public class Person
    {
        public string Name { get; set; }
        public string Password { get; set; }
    }
}

Я действительно чувствую, что есть запрос linq, который мог бы решить эту проблему, но я не мог обернуться вокруг него. Пожалуйста, дайте мне знать, если это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...