C# LINQ到存储过程。我是否可以使用动态参数列表来调用SP,而不是强制键入参数?

C# LINQ到存储过程。我是否可以使用动态参数列表来调用SP,而不是强制键入参数?,c#,asp.net,linq,dynamic,C#,Asp.net,Linq,Dynamic,我正在努力使我的代码更加动态。所以我现在用一些像这样的强类型参数调用存储过程 var results = datacontext.spReturnUsers(txtUserId.Text, txtUserFirstName.Text, txtUserLastName.Text); 现在我希望能够循环并动态添加参数。因此,如果明天我在我的面板中添加另一个搜索字段,如用户地址或其他内容,那么我就可以在控件中循环并动态添加参数,而不必返回并更改强类型存储过程调用 类似于LINQ之前,您需要在存储过程

我正在努力使我的代码更加动态。所以我现在用一些像这样的强类型参数调用存储过程

var results = datacontext.spReturnUsers(txtUserId.Text, txtUserFirstName.Text, txtUserLastName.Text);
现在我希望能够循环并动态添加参数。因此,如果明天我在我的面板中添加另一个搜索字段,如用户地址或其他内容,那么我就可以在控件中循环并动态添加参数,而不必返回并更改强类型存储过程调用

类似于LINQ之前,您需要在存储过程中使用parameters.add()


有什么方法可以实现这一点吗?仍然使用LINQ to SQL?

您可以让sp接收一个参数,然后循环并动态创建该参数的值。然后,存储的进程将知道xml参数中会出现什么……这是一种将可变长度参数传递到数据库的方法。
DataContext
类的
ExecuteCommand
ExecuteQuery
方法采用一个简单的参数(
params object[]
)数组。在这些方面有一些缺陷,但在大多数情况下,它们工作得很好,编写的代码比填充
SqlCommand
的参数要少

context.ExecuteCommand("EXEC usp_UpdateProductName {0}, {1}",
    productID, productName);

这就是它真正的意义所在。

哦,是的,那太好了。它确实节省了处理整个sqlclient然后构建查询的时间。不错+1.