ASP.NET 核心 WebApi Return 按属性列出的所有值
ASP.NET Core WebApi Return All Values by Attribute
我的 WebApi 有一个 table 用于具有以下 class 的应用程序:
namespace Models.Public
{
[Index(nameof(UUID), nameof(UID), IsUnique = true)]
public class Application
{
public Application()
{
this.UUID = new Guid();
}
public int ID { get; set; }
public Guid UUID { get; set; }
[Required]
public string UID { get; set; }
public string Publisher { get; set; }
public string Name { get; set; }
public string Version { get; set; }
}
}
字段 UUID
和 ID
是唯一的,因此我能够生成所需的 HttpGet
命令以获得与之匹配的结果。
但是,我正在尝试获取与 Publisher
字段匹配的所有项目的 IEnumerable 对象。也就是说,return 所有发布者为 "Google" 的对象。
我的尝试没有成功,我希望得到一些建议来修复我的代码:
// GET: api/Application/<publisher>
[HttpGet("{publisher}")]
public async Task<ActionResult<IEnumerable<Application>>> GetApplication(string publisher)
{
var application = await _context.Application.ToListAsync(publisher);
if (application == null)
{
return NotFound();
}
return await _context.Application.ToListAsync();
}
Publisher
不是唯一值,因此我希望能够 return 所有项目作为 JSON 对象,其中包含我在列表中键入的任何 Publisher。如果没有匹配,错误处理 NotFound();
.
您需要使用 .Where
、.Contains
进行过滤
// GET: api/Application/<publisher>
[HttpGet("{publisher}")]
public async Task<ActionResult<IEnumerable<ApplicationData>>> GetApplication(string publisher)
{
var applications = _context.Application.Where(a=>a.Publisher.Contains(publisher)));
/* You could also use == for exact match
var applications = _context.Application.Where(a=>a.Publisher == publisher));
*/
if (applications.Count() == 0)
{
return NotFound();
}
return await applications.ToListAsync();
}
我的 WebApi 有一个 table 用于具有以下 class 的应用程序:
namespace Models.Public
{
[Index(nameof(UUID), nameof(UID), IsUnique = true)]
public class Application
{
public Application()
{
this.UUID = new Guid();
}
public int ID { get; set; }
public Guid UUID { get; set; }
[Required]
public string UID { get; set; }
public string Publisher { get; set; }
public string Name { get; set; }
public string Version { get; set; }
}
}
字段 UUID
和 ID
是唯一的,因此我能够生成所需的 HttpGet
命令以获得与之匹配的结果。
但是,我正在尝试获取与 Publisher
字段匹配的所有项目的 IEnumerable 对象。也就是说,return 所有发布者为 "Google" 的对象。
我的尝试没有成功,我希望得到一些建议来修复我的代码:
// GET: api/Application/<publisher>
[HttpGet("{publisher}")]
public async Task<ActionResult<IEnumerable<Application>>> GetApplication(string publisher)
{
var application = await _context.Application.ToListAsync(publisher);
if (application == null)
{
return NotFound();
}
return await _context.Application.ToListAsync();
}
Publisher
不是唯一值,因此我希望能够 return 所有项目作为 JSON 对象,其中包含我在列表中键入的任何 Publisher。如果没有匹配,错误处理 NotFound();
.
您需要使用 .Where
、.Contains
// GET: api/Application/<publisher>
[HttpGet("{publisher}")]
public async Task<ActionResult<IEnumerable<ApplicationData>>> GetApplication(string publisher)
{
var applications = _context.Application.Where(a=>a.Publisher.Contains(publisher)));
/* You could also use == for exact match
var applications = _context.Application.Where(a=>a.Publisher == publisher));
*/
if (applications.Count() == 0)
{
return NotFound();
}
return await applications.ToListAsync();
}