0
我想解決一個想要構建的解決方案時遇到問題,也許這裏有人能夠引導我走向正確的方向。Silverlight 4:需要迭代幫助
我有屬於一個processflow流程,這些流程威力有孩子的,而這些孩子的威力也有兒童的等的列表。
名單如下:
ProcID ChildOFID
1 0 (means no child)
2 1
3 2
4 3
5 3
6 5
正如你可以看到PROC 「3」 包括2名兒童,其中一個(5)也有一個孩子(6)。
我想迭代這個列表並在畫布上繪製它們的對象。
現在我有下面的代碼,但它需要我寫一個我想要顯示的每個級別的循環。
int prev_location_left = 0;
int prev_location_top = 0;
// Select Last ProcessStep (has no PreID!)
var lastProcess = (from p in processlist
where p.PreID == 0
select p).FirstOrDefault<ProcessStep>();
if (lastProcess != null)
{
create_processStep(lastProcess.ProcessID,
lastProcess.Name,
lastProcess.ProcessTypeID,
(900),
(30),
lastProcess.CummulativeCT,
lastProcess.WaitingTimeActual,
lastProcess.ValueAddTimeActual,
lastProcess.ProcessStepTime);
prev_location_left = 900;
prev_location_top = 30;
}
// Select all the ProcessSteps that are a child of the last(first) one.
var listChilds = (from p in processlist
where p.PreID == lastProcess.ProcessID
select p);
int childscount = listChilds.Count();
int cnt = 0;
foreach (ProcessStep ps in listChilds)
{
create_processStep(ps.ProcessID,
ps.Name,
ps.ProcessTypeID,
(prev_location_left - (150)),
(30 + (60 *cnt)),
ps.CummulativeCT,
ps.WaitingTimeActual,
ps.ValueAddTimeActual,
ps.ProcessStepTime);
var listChilds2 = (from p in processlist
where p.PreID == ps.ProcessID
select p);
int cnt2 = 0;
foreach (ProcessStep ps2 in listChilds2)
{
create_processStep(ps2.ProcessID,
ps2.Name,
ps2.ProcessTypeID,
(prev_location_left - (300)),
(30 + (60 *cnt2)),
ps2.CummulativeCT,
ps2.WaitingTimeActual,
ps2.ValueAddTimeActual,
ps2.ProcessStepTime);
var listChilds3 = (from p in processlist
where p.PreID == ps2.ProcessID
select p);
int cnt3 = 0;
foreach (ProcessStep ps3 in listChilds3)
{
create_processStep(ps3.ProcessID,
ps3.Name,
ps3.ProcessTypeID,
(prev_location_left - (450)),
(30 + (60 * cnt2)),
ps3.CummulativeCT,
ps3.WaitingTimeActual,
ps3.ValueAddTimeActual,
ps3.ProcessStepTime);
cnt3 = cnt3 + 1;
}
cnt2 = cnt2 + 1;
}
cnt = cnt + 1;
}
需要做什麼是以下幾點:
- 獲取最後一個進程(具有PreId == 0)
- 檢查什麼他的孩子的是,借鑑他們在畫布上:左-150,排名前30的第一個孩子,排名前90的排名第二,排名前150的排名第三,等等。
現在,對於每個發現的孩子,我還需要檢查他們是否有孩子,並再次執行相同的邏輯,我無法使這個排序無限循環。
幫助! :)