using System.Collections.Generic;
public static void Main()
List<Item> items = new List<Item>()
Packages = new List<Package>
Packages = new List<Package>
Packages = new List<Package>
Packages = new List<Package>
Packages = new List<Package>
Packages = new List<Package>
List<RetailPrice> prices = new List<RetailPrice>()
HashSet<string> itemPackages = new HashSet<string>();
foreach (var item in items)
foreach (var package in item.Packages)
itemPackages.Add($"{item.Id}|{package.Id}");
List<RetailPrice> badPrices = new List<RetailPrice>();
List<RetailPrice> goodPrices = new List<RetailPrice>();
foreach (var price in prices)
if (!itemPackages.Contains($"{price.Item}|{price.Package}"))
.Where(price => items.Any(item => price.Item == item.Id && item.Packages.Any(package => price.Package == package.Id)))
.Where(price => !items.Any(item => price.Item == item.Id && item.Packages.Any(package => price.Package == package.Id)))
Console.WriteLine(JsonSerializer.Serialize(goodPrices, new JsonSerializerOptions { WriteIndented = true }));
Console.WriteLine(JsonSerializer.Serialize(badPrices, new JsonSerializerOptions { WriteIndented = true }));
public int Id { get; set; }
public string Name { get; set; }
public List<Package> Packages { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public int Item { get; set; }
public int Price { get; set; }
public int Package { get; set; }