Вот и все. Я не занимаюсь программированием на VB, но я пытался получить синтаксис как можно точнее. Для простоты я разделил его на два запроса, но с LINQ to SQL первый фактически не приводит к запросу БД. Это просто в сочетании со вторым. Ни один из них не выполняется, пока вы не перечислите второй запрос. Добавьте продолжения строки, если и когда это необходимо. Я не знаю, есть ли перевод в SQL для троичного оператора (есть в C #). Если нет, материализуйте деталь перед выбором, получив d.TotalHoles и h.TotalHoles, затем используйте LINQ для объектов, чтобы перечислить их и построить статус.
dim holes = from h in db.TotalHoles
groupby h.TeeId into g
select TeeId = Key, TotalHoles = g.Count()
dim courses = from d in db.CourseDescription
where d.CourseId = 1
join t in CourseTees on d.DescriptionId equals t.DescriptionId
join h in holes on h.TeeId equals t.TeeId
select t.TeeId,
t.DescriptionId,
t.Description,
t.Rating, t.Slope,
Status = If(d.TotalHoles = h.TotalHoles, 1, 0)