i would translate this queries with extension method also i would merge this queries in a single query with extension method
var variants = _ctx.Varianti.Where(i=>i.attivo==0);
var allProducts = await (from p in  _ctx.Articoli
                         where  p.cat==1
                         join v in variants on p.code equals v.code into gj
                         from articoli in gj.DefaultIfEmpty()
                         select new {
                           Codart = p.Codart,
                           Codvar = articoli.Codvar,
                        }).ToListAsync(); 
My classes
class Articolo{ public string Codart //key public double price }
class Variante{ public string Codart //key public string Codvar // key public int attivo }
I have to return products like so
Prod1-Variant1 Prod2-(no variant) prod3-Variant1 prod4-Variant1 prod4-Variant2 prod5-(no variant)
I should filters only variants with attivo==0 And all product without variant if they not have
The code works well but i need to optimize in single query to database and also with extension method
In T-Sql should be as so:
SELECT Codart,
       Codvar
  FROM dbo.Articoli
       LEFT OUTER JOIN dbo.Varianti
           ON dbo.Articoli.Codart = dbo.Varianti.Codart
 WHERE (Cat = 1)
   AND (attivo = 0)
 
    