> ...most of the solutions are for simpler functions...

I'm not quite sure what gave OP that impression; certainly, [`FindAllCrossings[]`](http://mathematica.stackexchange.com/a/5666) is quite capable of handling transcendental equations, as long as all the roots being sought are simple.

But first: I slightly tidied up the definition of `f[]` (e.g. by using auxiliary variables for common subexpressions), as the original version brought tears to my sensitive eyes:

 f[M_?NumericQ, λ_?NumericQ, ω_?NumericQ] := Module[{c, k, ξ1, ξ2},
 c = Sqrt[M/λ]; k = I M/(2 λ);
 ξ1 = (I - 1) (ω/Sqrt[λ] - Sqrt[λ]/2); ξ2 = (I - 1) (ω/Sqrt[λ] + Sqrt[λ]/2);
 ({1 + I, -I c}.ParabolicCylinderD[{-k, -k - 1}, ξ2]
 {c, 1 + I}.ParabolicCylinderD[{k - 1, k}, I ξ1] -
 {I c, 1 + I}.ParabolicCylinderD[{-k - 1, -k}, ξ1]
 {c, -1 - I}.ParabolicCylinderD[{k - 1, k}, I ξ2])/2]

...and with that,

 roots = FindAllCrossings[Im[f[2, 100, ω]], {ω, 0, 50}, WorkingPrecision -> 20]
 {1.4210217375131208861, 4.9080677718060732317, 7.6276760758692264160,
 11.242328271551264279, 14.025220377481373494, 17.188413671355074367,
 20.686743750589305061, 23.568643080603343806, 26.490531437543067517,
 29.849368653509459477, 33.222900929283185978, 36.429230282166527794,
 39.466210718845193558, 42.459671861175573218, 45.512697669849073416,
 48.625869297148536333}

As a graphical verification:

 Plot[Im[f[2, 100, ω]], {ω, 0, 50},
 Epilog -> {Red, AbsolutePointSize[4], Point[Thread[{roots, 0}]]}, 
 Frame -> True, PlotStyle -> RGBColor[59/67, 11/18, 1/7]]
![roots of a linear combination of PCFs](https://i.sstatic.net/TvXHf.png)