for (int i = 0; i < a.Count; i++) { Func predicate = ( (t) => { return t.key == a[i].key; } ); List temps = b.Where(predicate).ToList(); }