Я использую Linq2SQL и работаю с устаревшей системой. Система была построена в .Net, но без datalayer, поэтому я перекодирую ее так, чтобы она была одна. У меня есть Linq запрос, который выглядит следующим образом ...Как сделать IQueryable <out T> работать с reqular IQueryable?
var data = from p in db.tblPeoples
orderby p.strLastName,p.strFirstName
select new
{
guidPersonId = p.guidPersonId,
strFirstName = p.strFirstName,
strLastName = p.strLastName,
strRank = p.tblCodesRank.strDescription,
strPhone = p.strPhone,
strEmail = p.strEmail,
strOffice = p.tblOrganization.strAcronym,
RolesList = p.tblRoles
};
и когда я проверить подпись вар она является IQueryable, и я понятия не имею, что это такое. В моем datalayer у меня есть это возвращение как IQueryable, но когда я пытаюсь использовать версию datalayer, а затем делаю .where в возвращаемом наборе данных для поиска на нем, я получаю ошибки, которые я не могу преобразовать lambda expresstion, чтобы набрать строку, потому что это не тип делегата.
Что мне делать? Я пытаюсь создать повторное использование кода и использовать мою версию datalayer, которая уже написана. версия слой данных выглядит следующим образом:
public static IQueryable RetrieveAllPeople()
{
var data = from p in db.tblPeoples
orderby p.strLastName, p.strFirstName
select new
{
guidPersonId = p.guidPersonId,
strFirstName = p.strFirstName,
strLastName = p.strLastName,
strRank = p.tblCodesRank.strDescription,
strPhone = p.strPhone,
strEmail = p.strEmail,
strOffice = p.tblOrganization.strAcronym,
RolesList = p.tblRoles
};
return data;
}
Есть ли причина, по которой вы используете анонимные классы в RetrieveAllPeople()? Кроме того, ваш IQueryable не указывает тип, не считаете ли вы необходимым захватить необходимые атрибуты? –
Может ли кто-нибудь объяснить, что имеется в виду, когда компилятор выбрасывает «Невозможно преобразовать лямбда-выражение для ввода« string », потому что это не тип делегата? –