Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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# 在ASP.NET WebAPI中定义LINQ查询以将db表转换为新的透视表_C#_Sql Server_Linq_Stored Procedures_Asp.net Web Api - Fatal编程技术网

C# 在ASP.NET WebAPI中定义LINQ查询以将db表转换为新的透视表

C# 在ASP.NET WebAPI中定义LINQ查询以将db表转换为新的透视表,c#,sql-server,linq,stored-procedures,asp.net-web-api,C#,Sql Server,Linq,Stored Procedures,Asp.net Web Api,我通过SQLServer中的存储过程创建了一个透视表。但问题是,当我在Entity Framework中将SP添加到实体数据模型中时,它会给我返回类型INT,正如您在以下代码中看到的: TestContext.cs: public virtual int getMonthIsin(Nullable<System.DateTime> fromDate, Nullable<System.DateTime> toDate) {

我通过SQLServer中的存储过程创建了一个透视表。但问题是,当我在Entity Framework中将SP添加到实体数据模型中时,它会给我返回类型INT,正如您在以下代码中看到的:

TestContext.cs:

   public virtual int getMonthIsin(Nullable<System.DateTime> fromDate, Nullable<System.DateTime> toDate)
            {
                var fromDateParameter = fromDate.HasValue ?
                    new ObjectParameter("fromDate", fromDate) :
                    new ObjectParameter("fromDate", typeof(System.DateTime));

                var toDateParameter = toDate.HasValue ?
                    new ObjectParameter("toDate", toDate) :
                    new ObjectParameter("toDate", typeof(System.DateTime));

                return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("getMonthIsin", fromDateParameter, toDateParameter);
            }
当我在函数imports EDM中单击SP并调用列信息时,它会为我提供包含正确列的正确透视表。但是我不知道如何用WebApi返回它

我的想法是,将透视表定义为LINQ查询

以下是SQL代码:

ALTER PROCEDURE [dbo].[getMonthIsin]
    @fromDate datetime,
    @toDate datetime
AS
BEGIN
    DECLARE @colIsin nvarchar(max)
    DECLARE @query nvarchar(max)

    SET FMTONLY OFF;

    WITH vals AS (
        SELECT DISTINCT ds.QR_Fond_isin AS isin
        FROM QR_DS021s ds
    )

    SELECT @colIsin = COALESCE(@colIsin + ', ', '') + '['+ isin +']'
    FROM vals
    ORDER BY isin

    SET @query = 'SELECT *
                    FROM (SELECT ROUND(ds.ct_quot_rate,0) AS Erfuellungsgrad,
                                 ROUND(ds.ct_quot_rate,0) AS Quote,
                                 ds.QR_Fond_isin AS isin
                          FROM QR_DS021s ds INNER JOIN QR_Fonds f ON ds.QR_Fond_isin = f.isin
                          WHERE ds.datum >= @from_val AND ds.datum <= @to_val
                          ) t
                          PIVOT (
                            COUNT(Quote)
                            FOR isin IN ('+ @colIsin +')
                          ) p
                          ORDER BY Erfuellungsgrad DESC'

    EXEC sp_executesql @query, N'@from_val datetime, @to_val datetime', @from_val = @fromDate, @to_val = @toDate 

有人想在我的webapi中定义SQL查询到LINQ查询吗?或者如果可能的话,如何在WebAPI中定义存储过程

@SergeyBerezovskiy你知道吗。。我在另一个帖子上读到一条评论,说你有这方面的技巧。结果的形状总是一样的吗?@GertArnold你是说柱的形状?isin是动态的,因为当用户添加一个新的isin时,数据透视表必须用这个新的isin添加一个新列。@SergeyBerezovskiy你知道吗。。我在另一个帖子上读到一条评论,说你有这方面的技巧。结果的形状总是一样的吗?@GertArnold你是说柱的形状?isin是动态的,因为当用户添加一个新的isin时,透视表必须使用这个新的isin添加一个新列。