Я не думаю, что это как-то связано с временной таблицей, а скорее потому, что Linq не знает, какой результат ожидать.
С Dotnet Framework 4 это легко, как вы можете сделатьчто-то вроде
(from r in ProviderName.TestProcedure().AsDynamic()
select new { r.Id, r.Description}).ToList()
(предполагается, что Id и description являются полями в DischargePort)
В противном случае вам нужно что-то сделать в конструкторе, чтобы сообщить Linq, что выводит ваша процедура.Мне никогда не приходилось это делать, но, возможно, эта статья поможет.
Когда я думаю об этом, в данном конкретном случае вы должны быть в состоянии сделать что-то вроде
var results = (from r in ExecuteQuery<DischargePort>("exec TestProcedure")
select r ).ToList();