Как лучше всего проверить, содержит ли список какой-либо элемент определенной коллекции?
Как лучше всего получить список, содержащий только некоторые данные?
Мое приложение находится на веб-API ASP.NET CORE 5. Оно имеет
KitchenOrigin
s, каждый из которых содержит набор
Recipes
.
public class KitchenOrigin
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public ICollection<Recipe> Recipes { get; set; }
}
}
Пока мое приложение работает, я загружаю некоторые данные (Recipes
).
KitchenOrigin
s очень много, поэтому я хотел бы получить только список
KitchenOrigin
s, который содержит
Recipe
с.
Как в заголовке: Как лучше всего это сделать? Может быть
IQueryable
? Не могли бы вы мне с этим помочь?
Вот мой код:
Репо
public async Task<IEnumerable<KitchenOrigin>> GetKitchenOriginsWithRecipesAsync()
{
return await _context.KitchenOrigins
.Include(k => k.Recipes)
.ToListAsync();
}
Контроллер
[HttpGet("kitchen-origins")]
public async Task<ActionResult> GetKitchenOrigins()
{
var kitchenOrigins = await _recipeRepository.GetKitchenOriginsWithRecipesAsync();
return Ok(kitchenOrigins);
}
1 ответ
Решение
Вы можете использовать
.Where()
фильтровать и
.Any()
чтобы проверить, пусто оно или нет.
public async Task<IEnumerable<KitchenOrigin>> GetKitchenOriginsWithRecipesAsync()
{
return await _context.KitchenOrigins
.Where(k => k.Recipes.Any())
.Include(k => k.Recipes)
.ToListAsync();
}