Comparison table for comparing products
So it looks like what you want is some sort of outer join.  I think this should work for you:

var categoryFilter = "Category1";
var query =
    from addon in dc.Addons
    select new
    {
        Addon = addon.Name,
        Amounts =
            from product in dc.Products
            where product.Category.Name == categoryFilter
            join productAddon in dc.ProductAddons
                on new { AddonId = addon.Id, ProductId = product.Id }
                equals new { productAddon.AddonId, productAddon.ProductId }
                into pas
            from productAddon in productAddons.DefaultIfEmpty()
            select (int?)productAddon.Amount ?? 0,
    };