如何通过调用存储过程获取数据表的数据?

时间:2013-08-24 12:02:14

标签: c# sql-server linq linq-to-sql stored-procedures

我有一个像这样的存储过程:

ALTER PROCEDURE [dbo].[SelectUserInfo] 

AS
BEGIN
select * from User_Info
END 

我正在使用LINQ来调用此过程,并希望将数据存储在datatabledataset中 在这里我在做什么:

DataClassesDataContext dc = new DataClassesDataContext();
DataTable dt = null;
dt = (DataTable)dc.SelectUserInfo();

但它没有给出错误。

错误是这样的:

  

无法将类型为'SingleResult`1 [SelectUserInfoResult]'的对象转换为类型   'System.Data.DataTable'。

请帮我这样做......

1 个答案:

答案 0 :(得分:1)

确保您确实需要DataTable / DataSet。

DBML文件为您的存储过程创建一个返回类,在您的情况下,当您将存储过程SelectUserInfo添加到dbml文件时,会创建一个类SelectUserInfoResults。 / p>

因此,如果您没有被迫使用DataTables / DataSet,您只需创建一个List<SelectUserInfoResults>作为返回类型。

DataTables / DataSets和Linq To Entities类的性质非常不同,我建议尽可能避免混用它们。