c# - 在c#中使用linq执行存储过程

标签 c# sql linq sql-server-2008 linq-to-sql

我在 sql server 2008 中创建了一个存储过程,它为我提供了对表所做的更改。我正在使用 Linq to SQL 在 C# 中使用此表。 我的存储过程是

CREATE PROCEDURE dbo.getlog 
    -- Add the parameters for the stored procedure here
@p1 int = 0, 
@p2 int = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

  -- Insert statements for procedure here
DECLARE @from_lsn binary(10), @to_lsn binary(10)
SET @from_lsn =
 sys.fn_cdc_get_min_lsn('dbo_User_Info')
 SET @to_lsn   = sys.fn_cdc_get_max_lsn()
 SELECT ID_number, Name, Age FROM cdc.fn_cdc_get_all_changes_dbo_User_Info
 (@from_lsn, @to_lsn, N'all');
END
GO

上述程序在sql server中运行良好。然而,当我在 C# 中使用 linq 运行此语句时

        mytestDataContext obj = new mytestDataContext();
        var test=obj.ExecuteCommand("dbo.getlog");
        foreach( var abc in test)
        {}

我收到这个错误

Error 1 foreach statement cannot operate on variables of type 'int' because 'int' does not contain a public definition for 'GetEnumerator'

最佳答案

ExecuteCommand 返回一个 int.. 而不是您的结果。

请在此处查看 MSDN:http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.executecommand.aspx

public int ExecuteCommand(
    string command,
    params Object[] parameters
)

我认为您在寻找ExecuteQuery

关于c# - 在c#中使用linq执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17289860/

相关文章:

C# MYSQL Insert 查询无法更新或添加子行

mysql - 多个嵌套的 SELECT 查询和两列求和

c# - SQLite 数据源路径奇怪的问题?

mysql - 单表和多表语法的区别?

c# - 使用 Lambda 和 Func<> 的动态构造函数

c# - 根据在另一个列表 C# 中找到的值对列表进行排序

Linq 与 3 个表上的联合

c# - 加载任何版本的静态引用 .NET 程序集

c# - 使用 contains 搜索 linq 关键字

c# - 我需要一个 CSharp 脚本 (.csx) 运行程序,如 csi.exe,用于构建代理机器