Краткая версия с использованием синтаксиса метода и лямбда-выражений:
from t1 in Table1s
select t1.Field1 - Table3s.Where(x=>x.Table1ID == t1.ID).Sum(y=>y.Table2.Field1)
Более читаемая версия с использованием синтаксиса запроса с оператором let:
from t1 in Table1s
let tmp =
(
from t3 in Table3s
where t3.Table1ID == t1.ID
select t3.Table2.Field1
).Sum()
select t1.Field1 - tmp
Я настоятельно рекомендую использовать такой инструмент, как LinqPad , для разработки ваших запросов, поскольку он покажет вам сгенерированный SQL. Это позволяет настроить более дорогие запросы для получения лучших результатов.
Это также полезно для быстрого создания прототипов и тестирования коротких блоков кода.