There is a section in the BMW ETK parts catalogue called the spring table. In order to determine the correct spring part number for your car (any BMW model, even e34/e36, may be earlier) you need to enter all the options fitted to your car & it will spit out a spring part number.
Have a look at c3bmw.co.uk for pricing in e39 shocks. I think they were best value for OE Sachs shocks.
Example of spring table: