Я застрял в чем-то, что казалось легким, но быстро стало головной болью:
Вот класс, представляющий структуру, которую я использую:
public class LocumJobDistanceDifferenceObject {
public LocumJobDistanceDifferenceObject(Int64 ALocumID, Int64 AJobID, Decimal ADistanceMiles, Int32 ARateDifference, Boolean AIsDistanceUnderMax) {
LocumID = ALocumID;
JobID = AJobID;
DistanceMiles = ADistanceMiles;
RateDifference = ARateDifference;
IsDistanceUnderMax = AIsDistanceUnderMax;
}
public Int64 LocumID {
get;
set;
}
public Int64 JobID {
get;
set;
}
public Decimal DistanceMiles {
get;
set;
}
public Int32 RateDifference {
get;
set;
}
public Boolean IsDistanceUnderMax {
get;
set;
}
}
Я создаюСписок для хранения матрицы информации.Locum - рабочий, и его нужно поместить на работу.Скажем, у меня есть 50 рабочих мест и 75 Locums.Я строю свою матрицу, запуская алгоритм Locums x Jobs, в котором хранятся LocumID + JobID + Detrmine DistanceMiles между Locum и Job + Определить скорость, по которой Job платит / час, и Locum хочет / час + Если расстояние до Job превышает максимальное расстояние Locum, которое он / она желаетtravel
Так что, в основном, это количество строк в матрице Locums (75) x Jobs (50).
Теперь мне нужно запустить цикл (ForEach) для моей матрицы.(Я называю это MindMapTier01) следующим образом:
foreach (LocumJobDistanceDifferenceObject LocumJobDistanceDifferenceItem in MindMapTier01.OrderBy(order=>order.JobID)) {
/**
* Build a list (KeyValuePair<JobID, LocumID>) such that for each unique JobID,
* I can assign the Locum closest to that Job. I need to keep in mind that
* once a job is assigned, I dont want that JobID or LocumID for the next iteration
**/
}
Я надеюсь, что объяснил сам.Мне нужно преодолеть это в течение часа или двух.Пожалуйста, помогите.
С уважением.