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