Нужна помощь человека, хорошо знакомого с linq. Имею:
IEnumerable<Sometype1> clist = GetC();
// ...
// каждый элемент clist содержит множество slist
// ...
IEnumerable<Sometype2> slist = с.GetS();
Нужно обойти все элементы
s каждого
slist'а из всех
clist'ов, и над каждым
s выполнить метод с сигнатурой
void T(Sometype1 c, Sometype2 s).. Это первая изюминка.
Однако, и это изюминка #2, перед тем как прочитать slist с помощью c.GetS(), нужно вызвать метод с сигнатурой
void A(Sometype1 c, string pass).
Cейчас я делаю так:
var querry = GetC().SelectMany(
c => { A(c, pass); return c.GetS(); },
(el_c, s) => { T(el_c,s); return s; });
Но это не эстетично и не прозрачно. К тому же все остальные запросы в блоке кода сделаны в манере linq, и этот фрагмент выделяется как бельмо на глазу.
Не могу понять как синтаксически верно построить запрос. Хочу написать что-то типа
var querry = from c in GetC()
from s in /*перед этим вызовом должен быть А(c, pass)*/ c.GetS()
/*и где-то тут нужно как-то вызвать T(c,s)*/
select s;