Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq到Sql:通用存储过程_C#_Sql_Linq To Sql_Stored Procedures - Fatal编程技术网

C# Linq到Sql:通用存储过程

C# Linq到Sql:通用存储过程,c#,sql,linq-to-sql,stored-procedures,C#,Sql,Linq To Sql,Stored Procedures,我正在为C应用程序使用LINQtoSQL,目前正在处理一些存储过程。该应用程序适用于报纸,下面是一个示例存储过程: ALTER PROCEDURE dbo.Articles_GetArticlesByPublication @publicationDate date AS SELECT * FROM Articles WHERE Articles.PublicationDate=@publicationDate 无论如何,此查询将

我正在为C应用程序使用LINQtoSQL,目前正在处理一些存储过程。该应用程序适用于报纸,下面是一个示例存储过程:

ALTER PROCEDURE dbo.Articles_GetArticlesByPublication
   @publicationDate date
AS
   SELECT 
      *
   FROM 
      Articles
   WHERE
      Articles.PublicationDate=@publicationDate
无论如何,此查询将获取发布日期等于参数publicationDate的所有文章。如何更改此参数,使参数可以处理多个发布日期


另外,我不希望使用BETWEEN,而是希望选择日期。

没有本机支持将数组/列表传递给TSQL SP。但是,您可以使用XML或varchar数据类型。我更喜欢XML,因为您可以轻松地创建一个表变量,并从传入的XML中选择所有值,然后在WHERE子句的语句中使用这只是一个概念SQL:

CREATE STORED PROCEDURE foo AS
    @dates XML
BEGIN
...
DECLARE @datesTable TABLE ( [d] date )

INSERT INTO @datesTable
SELECT d FROM OPENXML (@dates, '/ROOT/date',1) WITH (d date)

...
SELECT... WHERE date IN (SELECT d FROM @datesTable) 

如果您使用的是SQL Server 2008,则可以使用将多个值传递给具有XML或逗号分隔列表的存储过程,但LINQ to SQL不支持此操作,因此您必须直接将ADO.NET与.NET 3.5及更高版本一起使用


请参阅marc_的文章,了解为什么它在LINQtoSQL中不可用

“起始日期”和“通过日期”标准是否适用于连续日期,还是需要一个不相关日期的列表?另外,您是否在datetime PublicationDate字段中存储了时间,或者只是一个日期,比如2011-01-03 00:00?它们只是日期,所以我想我可以将其更改为@PublicationDate。我刚刚编辑了我的帖子来回答你的第一个问题。理想情况下,我希望它具有不相关的日期。您正在使用哪个版本的SQL?