C# 在ASP.NET WebAPI中定义LINQ查询以将db表转换为新的透视表
我通过SQLServer中的存储过程创建了一个透视表。但问题是,当我在Entity Framework中将SP添加到实体数据模型中时,它会给我返回类型INT,正如您在以下代码中看到的: TestContext.cs: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) {
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添加一个新列。