По сути, эта ошибка говорит о том, что она не может преобразовать getCategoryTypeID в оператор SQL (или любой используемый вами уровень устойчивости). В вашем коде это имеет смысл, но имейте в виду, что этот код превращен в запрос, и если компилятор не знает, как сделать этот запрос из вашей функции, он не сможет ничего отозвать.
Вариант будет JOIN
две таблицы и запустить ваш где непосредственно против CategoryLinkTypes
.
Другой вариант - изменить функцию, чтобы она возвращала Queryable
, но я думаю, что JOIN
может быть проще в этом случае
Пример JOIN (я считаю, что это должно работать :)):
db.DataModel.Categories
.Join(
db.DataModel.CategoryLinkTypes, //What you are joining
category=>category.CategoryTypeID, //Right Side
categoryLinkType=>categoryLinkType.CategoryTypeID, //Left Side
(category, categoryLinkType) => //Creation of new, combined object
new{LinkTypeId = categoryLinkType.Id,
Category = category}
)
.Where(x=>x.LinkTypeId == selectedId)
.Select(x=>x.Category); //We only want the Category