0

我有这个 SQL 查询:

DECLARE @pageNo int=1
DECLARE @pageSize int=2

SELECT top 2 id,
Title,
Author,
NumberOfPages,
PublishedAt,
RowNumber
FROM 

(

SELECT top 2 id, Title, Author,
NumberOfPages,PublishedAt,
Row_Number() over (order by id desc) as RowNumber 
FROM Books 

)T
WHERE
T.RowNumber BETWEEN ((@pageNo-1)*@pageSize)+1 AND (@pageNo*@pageSize)

我想在 ASP.NET 核心中使用 C# 执行这个 SQL 查询

我试过这个代码:

[HttpGet]
public async Task<ActionResult<IEnumerable<Books>>> GetBooks()
        {
          

  
      return await _context.Books.FromSqlRaw("Select * from Books where id = 2").ToListAsync();

           

        }

但是此代码仅适用于像上一个示例一样的单个 Sql 查询行

Select * from Books where id = 2

但是当我尝试使用多行的复杂 SQL 查询时不起作用

我希望你的帮助

非常感谢

4

2 回答 2

0

我认为最好的方法是将该查询写入文本文件并将其放在您的项目中,然后使用这行代码从该文件中读取文本

string queryText = File.ReadAllText(@"D:\yourpathhere\QueryTextFile.txt");

然后使用 queryText 变量

于 2022-03-03T09:45:04.703 回答
0

您必须将整个查询放在一行中或使用“+”或字符串生成器来连接行

var query ="DECLARE @pageNo int=1 DECLARE @pageSize int=2 SELECT top 2 id,..";

//or
 var query = "DECLARE @pageNo int=1 " +
             "DECLARE @pageSize int=2 " + 
             "SELECT top 2 id, " +
于 2022-02-14T23:42:31.713 回答