【发布时间】:2018-10-23 09:10:46
【问题描述】:
我有问题。我有一个函数(几乎无处不在)
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();
那么让我们看看Console.CLICK HERE 看起来在函数中一切正常,但是当我想继续调度程序时,函数内部发生的事情不起作用。有人可以帮助我吗?
【问题讨论】:
-
按类型和事件时间排序的结果将是
aUT : 2 aUT : 5 BS : 3 QS : 6 WT : 4 -
我已经找到了我的问题,我创建了返回 List
对象的函数,现在一切正常。非常感谢您的帮助。 @MichaelPuckettII -
@TyRRRax 它在函数中起作用的原因是您要返回一个新列表。当您运行 linq 查询时,即使您返回到列表,您也不会修改原始的,而只是修改新的引用。您必须使用您拥有的任何更新机制来更新调度程序。