Math.NET Numerics is very nice, if it supports the operations you want. The older Math.Net Iridium still supports more options. Also, dnAnalytics is quite nice, but no longer being developed. (It, as well as Iridium, are being merged into Math.NET Numerics.)
On the commercial side, there are some very good, robust options. The Extreme Optimization Numerical Libraries work very well. The Visual Numerics library also works very well (although with a royalty-based distribution…).