Как это
var b1s = from b in TableB
where ...
select b.B1;
var c2s = from c in TableC
where ...
select c.C2;
var a1sAndA2s = from a in TableA
where !b1s.Contains(a.A3)
&& c2s.Contains(a.A4)
select new {
a.A1,
a.A2
};
Чтобы увидеть генерируемый оператор SQL, вы можете либо использовать трассировщик оператора SQL (не указывайте меня в имени, но оно встроено в VS2010), либо получить оператор как String
через
String sqlStatement = (a1sAndA2s as ObjectQuery).ToTraceString();