using System; using System.Linq; public class Range { public int Start { get; set; } public int End { get; set; } } public class Item { public int Number { get; set; } } public class Test { public static void Main() { var ranges = new Range[] { new Range{Start = 1, End = 5}, new Range{Start = 6, End = 10} }; var items = new Item[] { new Item{Number = 3}, new Item{Number = 4}, new Item{Number = 7}, new Item{Number = 9} }; var rangeGroups = ranges .Select(r=> new {Range=r, Items=items.Where(i=> (r.Start <= i.Number) && (i.Number <= r.End))}); foreach(var rangeGroup in rangeGroups) { Console.WriteLine("Start: {0} End:{1}",rangeGroup.Range.Start, rangeGroup.Range.End ); foreach(Item item in rangeGroup.Items) { Console.WriteLine("\tItem: {0}",item.Number); } } } }