public void combineGroup(Group g) /*將單一group合併到本group*/ { //確認g是單一Group if (g.Qty.Count > 1) { //Globals.ThisAddIn.odiMsgOut("[Error] Can't comine complex group, check code!"); MessageBox.Show("[Error] Can't comine complex group, check code!"); return; } else { //合併main source資料 Qty.Add(g.Qty[0]); ProjectName.Add(g.ProjectName[0]); SCHVersion.Add(g.SCHVersion[0]); BOMVersion.Add(g.BOMVersion[0]); BOMKey.Add(g.getBomKey()); //歷遍目前AVL,找到相同的合併,並且從g移除 bool foundAVLing; foreach (var i in AVL) { foundAVLing = g.AVL.TryGetValue(i.Key, out Item gi); i.Value.ProjectName.Add(g.ProjectName[0]); //不論有沒有找到,都要增加project欄位 i.Value.SCHVersion.Add(g.SCHVersion[0]); i.Value.BOMVersion.Add(g.BOMVersion[0]); i.Value.BOMKey.Add(g.getBomKey()); if (foundAVLing) { i.Value.Qty.Add(gi.Qty[0]); g.AVL.Remove(i.Key); } else { i.Value.Qty.Add(0); } } //如果g還有剩下(新的)AVL item,則加入目前的AVL dictionary, 並且補足其前面的空白欄位 if (g.AVL.Count > 0) { foreach (var j in g.AVL) { j.Value.ProjectName = ProjectName; j.Value.SCHVersion = SCHVersion; j.Value.BOMVersion = BOMVersion; j.Value.BOMKey = BOMKey; for (int k = 0; k < Qty.Count() - 1; k++) { j.Value.Qty.Insert(0, 0); } AVL.Add(j.Key, j.Value); } } } }