In V1 fehlt das Hinzufügen zur Collection via einem Aufruf von Add. Die geschweiften Klammern tun hier gar nix. Das ist so kein Initializer (man beachte das Semikolon hinter dem Construktoraufruf, danach kommt was unabhängiges). In einem Initializer könntest du auch keine Sprachkonstrukte wie z.B. Schleifen ausführen.
In V2 versuchst du über eine leere Liste zu iterieren da passiert dann natürlich auch nichts. Und mit dem ForEach würdest du nur für jedes Element in der Liste etwas tun aber keine Listenelemente erzeugen. Maximal könntest du Elemente verändern.
Du kannst aus context.Tab_Hersteller eine List von deinem Typ erstellen und die dann an den Konstruktor der ObservableCollection übergeben.
Etwa
C#-Quelltext
1:
| var listHersteller = new ObservableCollection<Combolisten>(context.Tab_Hersteller.Select(p => new Combolisten() { p.ID, p.Hersteller }).ToList()); |