ho riletto meglio il post, effettivamente il problema è un po' piu complesso

per mio personale esercizio ho cercato di risolvere la questione utilizzando solo linq, spero nel modo piu giusto:

Il risultato finale è:
A1
--ABC
A3
--ABC
--ABC

esclude sia A2 che i singoli ordini in A1 che non siano ABC.

ti ho messo qualche commento alla query linq
codice:
            List<Azienda> aziende = new List<Azienda>
            {
                new Azienda
                { 
                    ID = "A1",
                    Ordini = new List<Ordine>
                    {
                        new Ordine { ID = "ABC" },
                        new Ordine { ID = "NO" }
                    }
                },
                new Azienda
                { 
                    ID = "A2",
                    Ordini = new List<Ordine>
                    {
                        new Ordine { ID = "NO" },
                        new Ordine { ID = "NO" }
                    }
                },
                new Azienda
                { 
                    ID = "A3",
                    Ordini = new List<Ordine>
                    {
                        new Ordine { ID = "ABC" },
                        new Ordine { ID = "ABC" }
                    }
                }
            };

            var query = aziende
                .SelectMany(a => a.Ordini.Where(o => o.ID == "ABC") //esclude le aziende che non hanno nemmeno un ordine ABC
                    .Select(o => new { az = a, or = o })) //seleziono in una nuova classe anonima per tenere traccia dell'azienda
                .GroupBy(g => g.az) //raggruppo per azienda
                .Select(s => new Azienda //ora riporto la collection di tipo IGrouping in una di tipo List<Azienda>
                { 
                    ID = s.Key.ID, 
                    Ordini = s.Key.Ordini
                    .Where(o => o.ID == "ABC") // Ora per ogni azienda escludo anche gli ordini
                    .ToList()
                })
                .ToList();
EDIT
queste sono le due classi:
codice:
public class Ordine
        {
            public string ID { get; set; }
        }
        public class Azienda
        {
            public string ID { get; set; }
            public List<Ordine> Ordini { get; set; }

            public Azienda()
            {
                Ordini = new List<Ordine>();
            }
        }