Во-первых, я всегда создаю статическую утилиту / класс расширения для определения этих методов:
public static void AddAll<T>(this ICollection<T> c, IEnumerable<T> items)
{
items.ForEach(item => c.Add(item));
}
public static void AddAll<T1, T2>(this ICollection<T1> c, IEnumerable<T2> items, Func<T2, T1> converter)
{
c.AddAll(items.Select(converter));
}
public static void ForEach<T>(this IEnumerable<T> e, Action<T> action)
{
foreach (T item in e)
action.Invoke(item);
}
Теперь все, что вам нужно, это:
partnership.ForEach(p =>
{
p.Partner.Services = new List<Tuple<int, string>>();
p.Partner.Services.AddAll(from s in services
where s.Item3 == p.Partner.Id
select Tuple.Create(s.Item1, s.Item2))
});