为什么linq无法获取临时表值

本文关键字:临时表 获取 linq 为什么 | 更新日期: 2023-09-27 17:49:47

处理C#vs2008。我有一个存储过程,这个过程保存临时表,我需要获取临时表的值。我的sql查询如下:

create procedure [dbo].[TestProcedure]
as
SELECT * INTO #temp1 from(select * from DischargePort) as b
select * from #temp1
drop table #temp1

我上面的查询有一个名为#temp1的临时表。在sql server管理中运行这个查询后,我得到了结果,但当我尝试在linq中执行这个过程时,我没有得到结果。我的linq语法如下:

 var r = ProviderName.TestProcedure();

有人能告诉我为什么会出现这个问题,如何克服这个问题吗。希望任何人不要说linq不能处理临时表或这种词。如果有任何查询plz ask。提前谢谢。

为什么linq无法获取临时表值

我不认为这与临时表有任何关系,而是Linq不知道应该得到什么输出。

有了Dotnet Framework 4,这很容易,因为你可以做一些类似的事情

 (from r in ProviderName.TestProcedure().AsDynamic() 
       select new { r.Id, r.Description}).ToList()

(假设Id和描述是卸货端口中的字段(

否则,您需要在设计器中做一些事情来告诉Linq您的过程输出是什么。我从来没有这样做过,但也许这篇文章会有所帮助。

当我想起来的时候,在这种特殊的情况下,你应该能够做一些类似的事情

var results = (from r in ExecuteQuery<DischargePort>("exec TestProcedure") 
select  r ).ToList();

我首先下载linqpad来查看linq正在发出的sql,这可能会提供一些线索。您还可以使用sql探查器工具来查看正在运行的查询。