Во-первых, метод GetTodoItem извлекает элемент задачи по идентификатору. Если вы хотите выполнить поиск элементов задачи по имени, имейте в виду, что поиск вернет один или несколько элементов, в этом случае вы должны использовать тип IEnumerable вместо TodoItem.;этот критерий поиска применяется только в том случае, если имя уникально.
В любом случае, если вы хотите выполнить поиск по имени, вы можете отредактировать свой метод GetTodoItems следующим образом:
// GET: api/Todo
[HttpGet]
public async Task<IEnumerable<TodoItem>> GetTodoItems(string name = "")
{
// Cast DbSet property to IQueryable<TModel>
var query = _context.TodoItems.AsQueryable();
// Validate if name parameter has value
if (!string.IsNullOrEmpty(name))
query = query.Where(item => item.Name.Contains(name));
// Get results from database
return await query.ToListAsync();
}
Также, если вы хотите выполнить поиск вGetTodoItem по другим параметрам, вы можете внести эти изменения в ваш метод:
// GET: api/Todo/5
[HttpGet("{id}")]
public async Task<IActionResult<TodoItem>> GetTodoItem(long id, string name = "")
{
var todoItem = await _context.TodoItems.FirstOrDefaultAsync(item => item.id == id);
if (!string.IsNullOrEmpty(name))
todoItem = await _context.TodoItems.FirstOrDefaultAsync(item => item.Name.Contains(name));
return todoItem;
}
Если вы хотите узнать больше о поиске в контроллерах, пожалуйста, проверьте эту статью: Создание веб-API в ASP.NET Core 2.0
Пожалуйста, дайте мне знать, если этот ответ полезен.