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

时间:2011-04-13 02:51:35

标签: c# linq linq-to-sql c#-3.0

C#vs2008 上工作。我有一个存储过程,这个程序包含临时表,我需要获取临时表值。我的查询是如下:

create procedure [dbo].[TestProcedure]
as

SELECT * INTO #temp1 from(select * from DischargePort) as b

select * from #temp1

drop table #temp1

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

 var r = ProviderName.TestProcedure();

任何人都可以告诉我为什么会出现这个问题,如何克服这个问题。希望任何一个身体都不要说linq无法处理临时表或这类词。如果有任何查询请问。请提前谢谢。

2 个答案:

答案 0 :(得分:1)

我不认为这与临时表有任何关系,而是Linq不知道预期的输出是什么。

使用Dotnet Framework 4,这很简单,因为您可以执行类似

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

(假设Id和描述是DischargePort中的字段)

否则,您需要在设计师中做一些事情,告诉Linq您的程序输出了什么。我从来没有这样做,但也许this article会有所帮助。

当我考虑它时,在这种特殊情况下,你应该能够做类似

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

答案 1 :(得分:0)

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