JoinOneToMany( List <Elmax.Element> vecElem1, List <Elmax.Element> vecElem2, DoubleElementPrediate pred) { List <KeyValuePair <Elmax.Element, List <Elmax.Element> > > vecResults = new List <KeyValuePair <Elmax.Element, List <Elmax.Element> > >(); bool makepair = false; for (int i = 0; i < vecElem1.Count; ++i) { makepair = false; for (int j = 0; j < vecElem2.Count; ++j) { if (pred(vecElem1[i], vecElem2[j])) { if (makepair == false) { List <Elmax.Element> vecChild = new List <Elmax.Element>(); vecResults.Add(new KeyValuePair <Elmax.Element, List <Elmax.Element> >(vecElem1[i], vecChild)); makepair = true; } vecResults[vecResults.Count - 1].Value.Add(vecElem2[j]); } } } return(vecResults); }
JoinOneToOne( List <Elmax.Element> vecElem1, List <Elmax.Element> vecElem2, DoubleElementPrediate pred) { List <KeyValuePair <Elmax.Element, Elmax.Element> > vecResults = new List <KeyValuePair <Elmax.Element, Elmax.Element> >(); for (int i = 0; i < vecElem1.Count; ++i) { for (int j = 0; j < vecElem2.Count; ++j) { if (pred(vecElem1[i], vecElem2[j])) { vecResults.Add(new KeyValuePair <Elmax.Element, Elmax.Element>(vecElem1[i], vecElem2[j])); break; } } } return(vecResults); }