В основном LINQ to SQL не знает, что сделает этот конструктор - он хочет попытаться преобразовать его в SQL-запрос, но не знает, как это сделать. Нужно ли вам после этого добавлять дополнительные биты в запрос? Если нет, то вы могли бы сделать:
public IEnumerable<ISite> GetSites()
{
return Db.Sites.Select(x => new { x.id, x.name }) // Project in SQL
.AsEnumerable() // Do the rest in process
.Select(x => new cms.bo.Site(x.id, x.name))
.Cast<ISite>(); // Workaround for lack of covariance
}
EDIT: Я пропустил аспект дисперсии, и был предполагая, что запрос был неудачу во время выполнения. Это, безусловно, стоит попробовать только вызов Cast<ISite>()
как в ответ tvanfosson - но если это не сработает, попробуйте выше :)
Великий ответ снова Джон! – Matias
@ Джон, я это не будет работать из-за общего типа ковариации: '' IEnumerable к '' IEnumerable –
Не возвращающие IQyueryable, не является IQueryable ? –
tvanfosson