В основном 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
}
РЕДАКТИРОВАТЬ: я пропустил аспект отклонения, и предполагал, что запрос не выполнялся во время выполнения. Определенно стоит попробовать просто позвонить на Cast<ISite>()
согласно ответу tvanfosson - но если это не сработает, попробуйте выше:)