using System.Collections.Generic;
public int ItemGroupId { get; set; }
public int CategoryId { get; set; }
public int ItemId { get; set; }
public List<ItemGroup> ItemGroups { get; set; }
public static void Main(string[] args)
List<int> categories = new() { 2, 5, 7 };
List<Item> myItems = new()
new() { ItemGroupId = 1, CategoryId = 1 },
new() { ItemGroupId = 2, CategoryId = 2 }
new() { ItemGroupId = 3, CategoryId = 3 },
new() { ItemGroupId = 4, CategoryId = 4 }
new() { ItemGroupId = 5, CategoryId = 5 },
new() { ItemGroupId = 6, CategoryId = 6 }
IEnumerable<Item> filteredItems = myItems
.IntersectBy(categories, gr => gr.CategoryId)
Console.WriteLine("ItemId of filtered items:\n");
Console.WriteLine(string.Join(", ", filteredItems.Select(item => item.ItemId)));