检查列表是否包含特定 collection 的任何元素的最佳方法是什么?

What is the best way to check if list contain any element of specific collection?

获取仅包含一些数据的列表的最佳方法是什么?

我的应用程序在 ASP.NET CORE 5 Web API 上。它有 KitchenOrigin 个,每个包含 collection 个 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)。

KitchenOrigins 非常多,所以我只想获得包含 Recipes.KitchenOrigins 的列表。 =21=]

如标​​题所示:最好的方法是什么? 也许 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);
        }

可以使用.Where()过滤,.Any()判断是否为空。

public async Task<IEnumerable<KitchenOrigin>> GetKitchenOriginsWithRecipesAsync()
{
    return await _context.KitchenOrigins
      .Where(k => k.Recipes.Any())
      .Include(k => k.Recipes)
      .ToListAsync();
}