using System.Collections.Generic;
public static void Main()
ILookup<Guid, Guid> productMappings = new Dictionary<Guid, Guid>()
{ Guid.Parse("{431C825C-AA92-48EA-B2CD-1B19474FDF35}"), Guid.Parse("{748001F0-BF03-4D58-A67B-B6475BDFC8B6}") },
{ Guid.Parse("{A216D67B-D543-4514-92C8-12BBC7B285D9}"), Guid.Parse("{01238CC3-7020-4AEC-8276-C9FE570D8194}") }
}.ToLookup(item => item.Key, item => item.Value);
ICollection<Guid> productIdCollection = new Guid[]
Guid.Parse("{431C825C-AA92-48EA-B2CD-1B19474FDF35}"),
Guid.Parse("{A216D67B-D543-4514-92C8-12BBC7B285D9}")
var productsWithPendingJobs = new HashSet<Guid>()
Guid.Parse("{A216D67B-D543-4514-92C8-12BBC7B285D9}")
var selectedProductIds = productIdCollection.Where(id => productMappings.Contains(id) && !productsWithPendingJobs.Contains(id));
Console.WriteLine(String.Join(Environment.NewLine, selectedProductIds));
Console.WriteLine("New Style");
var linqSelected = productIdCollection
.Intersect(productMappings.Select(item => item.Key))
.Except(productsWithPendingJobs);
Console.WriteLine(String.Join(Environment.NewLine, linqSelected));