У вас нет , чтобы нормально поставить проекцию в конце - но похоже, что вы задействовали две таблицы. Ваш SQL-запрос возвращает все столбцы, включая столбцы из таблицы карты. Если вы хотите только задачи, они вам не нужны. Попробуйте это:
return from task in ObjectContext.TaskTable
join map in ObjectContext.MapTable
on task.EndPointID equals map.EndPointID
where map.SiteID == id
select task;
(Я основывал запрос на SQL больше, чем на предоставленном вами LINQ - из SQL похоже, что SiteID является частью карты, а не задачей.)
Вы можете написать это в точечной записи, а не как выражение запроса, но это уродливее:
return Object.ContextTable.Join(ObjectContext.MapTable
.Where(map => map.SiteID = id),
task => task.EndPointID,
map => map.EndPointID,
(task, map) => task);
(Обратите внимание, что здесь я переместил предложение Where
, так как в этом случае оно оказывается проще перед самим объединением. Вы можете сделать то же самое в запросе выражения запроса, но опять-таки это не будет хороший.)