using System.Collections.Generic;
public static void Main()
List<TrackingInfo> tracking = new List<TrackingInfo>
new TrackingInfo { Template = "Template A", ProfilesIDs = new List<int> { 1,3,5 }},
new TrackingInfo { Template = "Template B", ProfilesIDs = new List<int> { 3,5,6 }},
new TrackingInfo { Template = "Template C", ProfilesIDs = new List<int> { 2,4,6 }}
var groupedByprofiles = tracking.SelectMany(x => x.ProfilesIDs, (trackObj, profileIds) => new { trackObj, profileIds }).GroupBy(x => x.profileIds);
foreach (var grp in groupedByprofiles)
Console.WriteLine("ProfileID: " + grp.Key);
foreach (var temp in grp)
Console.WriteLine(temp.trackObj.Template);
public class TrackingInfo
public string Template { get; set; }
public List<int> ProfilesIDs { get; set; }