Итак, я создаю базу данных, которая позволяет пользователям создавать «волшебный предмет», который они затем могут загрузить в мой веб-API ASP.net.Это работает просто отлично.И я хочу показать все эти элементы на моей веб-странице, потянув их из API.Это тоже отлично работает.Но теперь, когда я пытаюсь отфильтровать, отсортировать или ограничить количество запросов, я все равно получаю базовый список каждого возвращаемого мне предмета.Сейчас всего 14 записей, так что ничего страшного, но я все еще хочу это сделать.Но что бы я ни делал, он всегда возвращает полный список.
Это контроллер ASP.net в visual studio:
[Route("api/v1/MagicItem")]
public class MagicItemController : Controller
{
private ItemListContext context;
public MagicItemController(ItemListContext context)
{
this.context = context;
}
[Produces("application/json")]
[HttpGet]
//public List<MagicItem> GetAllItems(string name, string category, string rarity, int? page, string sort, int limit = 5, string dir = "desc")
public List<MagicItem> GetAllItems(
string name,
string category,
string rarity,
int? page,
string sort,
int limit = 5,
string dir = "desc")
{
IQueryable<MagicItem> query = context.MagicItems;
if (!string.IsNullOrWhiteSpace(name))
query = query.Where(d => d.Name.Contains(name));
if (!string.IsNullOrWhiteSpace(category))
query = query.Where(d => d.Category == category);
if (!string.IsNullOrWhiteSpace(rarity))
query = query.Where(d => d.Rarity == rarity);
if (!string.IsNullOrWhiteSpace(sort))
{
switch (sort)
{
case "Name":
if (dir == "asc")
query = query.OrderBy(d => d.Name);
else if (dir == "desc")
query = query.OrderByDescending(d => d.Name);
break;
case "Rarity":
if (dir == "asc")
query = query.OrderBy(d => d.Rarity);
else if (dir == "desc")
query = query.OrderByDescending(d => d.Rarity);
break;
case "Category":
if (dir == "asc")
query = query.OrderBy(d => d.Category);
else if (dir == "desc")
query = query.OrderByDescending(d => d.Category);
break;
}
}
query = query.Take(limit);
if (page.HasValue)
query = query.Skip(page.Value * limit);
return context.MagicItems.ToList();
}
}