I'm attempting to create a comparison table to compare products depending on the add-ons they have. To grab the data and filter it I'm using LINQ To SQL.Table's Layout (cut short):Products Table  IDNameCategoryIDProductAddonsCategory TableIDNameProductAddon TableIDAmount AddonIDProductIDAddon TableIDNameExample Data:ProductsID      Name      CategoryID1       Product1  1   2       Product2  1 3       Product3  1 CategoriesID      Name1       Category1ProductAddonsID      Amount      AddonID      ProductID1       1           1            12       2           2            1 3       1           3            14       2           1            25       3           2            26       1           2            37       1           3            3AddonsID      Name1       Addon12       Addon23       Addon3Currently I have this:var addons = (from s in Products              where s.Category.Name == Category1              orderby s.ProductAddons.Count descending              let adds = from a in s.ProductAddons                         orderby a.Addon.Name                         select new { Name = a.Addon.Name, Amount = a.Amount }              select adds).ToList();var compare = from c in addons              let has = from z in addons.First().Union(addons.First().Except(c))                      let add = (from a in c                                 where a.Name == z.Name                                 select a.Amount).FirstOrDefault()                      select new { Name = z.Name, Amount = add }              select has;var compileResults = from c in addons.First()                     let adds = from s in compare                             let y = (from a in s                                      where a.Name.Contains(c.Name)                                      select a.Amount).First()                             select y                     select new { Addon = c.Name, Amounts = adds };This would return (3 products, 3 Add-ons):Addon          AmountsAddon1         1               2               0Addon2         2               3               1Addon3         1               0               1I can then loop through the results to build my compare table, which works fine. But to me the LINQ looks somewhat messy. Would there be a cleaner way to do this? 
Comparison table for comparing products
c#;linq;entity framework;linq to sql