如何解决C#获取请求标头并返回实体的排序列表 编辑添加了邮递员请求示例:
由于我无法访问最初的堆栈溢出帐户而再次发布。最初的问题发布于here。不便之处,敬请原谅。
如何阅读请求标头?我想查找并阅读一个说“已排序”的键,如果是,则返回所有书籍/实体的已排序版本。我也不确定如何返回已排序的实体。我了解这似乎很奇怪,但这是我的分配规范的一部分,否则我将使用[FromRoute]
属性从URL获取一个参数。 This似乎不适合我。 This是另一个旧问题,因为我无法将请求标头键与string或null进行比较,因此该问题也不起作用。这是我当前的代码:
// GET: api/Books
[HttpGet]
public async Task<ActionResult<IEnumerable<Book>>> GetAllBooks()
{
if (Request.Headers["sorted"] == true)
{
}
return await _context.Books.ToListAsync();
}
public class Book
{
[Key]
public long id { get; set; }
public long libraryId { get; set; }
public string title { get; set; }
public string author { get; set; }
public string description { get; set; }
}
编辑:添加了图书实体
解决方法
您可以这样实现:
if (Request.Headers.TryGetValue("sorted",out StringValues sortedValue)
&& bool.TryParse(sortedValue,out bool isSorted))
{
if(isSorted)
{
return await _context.Books.OrderByDescending(a => a.Id).ToListAsync();
}
}
return await _context.Books.OrderBy(a => a.Id).ToListAsync();
您要写TryGetValue
和TryParse
的原因是,如果值是exceptions
或值不是missing/null
,请避免使用boolean
。
,根据您的逻辑,您可以按ascending or descending
的顺序对图书进行排序,也可以根据您想要的property
对图书进行排序,例如:ID,标题,作者或发布日期...等。
或者为简单起见,您可以将支票更改为:
if (bool.TryParse(Request.Headers["sorted"],out bool isSorted) && isSorted){
return await _context.Books.OrderByDescending(a => a.Id).ToListAsync();
}
return await _context.Books.OrderBy(a => a.Id).ToListAsync();
编辑(添加了邮递员请求示例):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。