Да - выражение будет переведено (наилучшим образом) в запрос SQL.
И, как и любой запрос T-SQL, выражение запроса EF (или L2SQL) может быть реорганизовано для повышения производительности.
Почему бы не запустить SQL Profiler в фоновом режиме, чтобы увидеть, что он выполняется, и сначала попытаться оптимизировать необработанный T-SQL, что поможет оптимизировать выражение.
Или, если у вас LinqPad , просто оптимизируйте запрос T-SQL и попросите LinqPad написать ваш запрос для вас.
Кроме того, я не совсем уверен, почему вы указали делегата для выражения Count ().
Вы можете просто сделать это:
var query= from c in db.Table1
select new { c.CustomerID, OrderCount = c.Table2s.Count() };