c# - 返回 oData 对象时隐藏空值
问题描述
我有下面的代码从 SQL 视图中获取数据,并使用 odata 以便我们可以通过在获取请求中使用查询字符串来查询数据。
我遇到的问题是Author可以为空,但如果它为空,我不希望它显示。我无法摆脱以我目前的方式映射它并向其中添加三元运算符也隐藏空数据破坏了Queryable功能。
[HttpGet]
[CustomEnableQuery(AllowedQueryOptions = Filter | Skip | Top | OrderBy | Count | Select, PageSize = 100)]
[ProducesResponseType(typeof(IQueryable<BookViewModel>), Status200OK)]
[ProducesResponseType(typeof(ProblemDetails), Status400BadRequest)]
[ProducesResponseType(typeof(ProblemDetails), Status401Unauthorized)]
[ProducesResponseType(typeof(ProblemDetails), Status404NotFound)]
public IQueryable<BookViewModel> Get()
{
return _defaultContext.Books
.AsQueryable()
.Select(x => new BookViewModel
{
BookId = x.BookId,
BookName= x.BookName,
BookPrice= x.BookPrice,
PublishingCompany= x.PublishingCompany,
Author = new Author
{
AuthorName = x.AuthorName,
Birthday = x.Birthday
}
});
}
当作者为空时,上面的代码返回:
{
"BookId ": "f726bcf7-e4f6-4609-b25e-a0d47cda7894",
"BookName": "Atomic Habits",
"BookPrice": "500",
"PublishingCompany": "Penguin",
"Author ": {
"AuthorName": null,
"Birthday": null,
}
}
我如何在 null 时将 Author 全部隐藏起来,或者将 Author 显示为 null 而映射出的值也显示为 null?
解决方案
您可以使用??
等于的运算符if (obj == null) obj = "something else"
.......
Author = new Author
{
AuthorName = x.AuthorName ?? "",
Birthday = x.Birthday ?? ""
}
......
推荐阅读
- php - Laravel Passport TokenGuard::__construct() 必须实现接口
- node.js - 包含 Promise 的单元测试函数
- sql - 计算平均租用时间的 SQL 查询是什么?
- typescript - 导入从 TypeScript 文件创建的 js 文件
- c# - 无法在 Unity .exe 上使用编辑器位置提供程序(Mapbox)
- node.js - 在没有构建器的情况下以编程方式使用 Nuxt
- firebase - “_OBJC_CLASS_$_FIRAnalytics”,引用自 libRNFirebase.a(RNFirebaseAnalytics.o) 中的 objc-class-ref
- angular - 删除并再次添加到dom后自动对焦不起作用
- javascript - 使用nodeJS登录像pm2这样的表
- dataweave - 使用 p() 函数 mule 在 dataweave 2.0 中获取安全属性