I would go with XBox One controller for sure. You can get a Logitech controller for cheaper, but they can be super sensitive and have lots of problems. (Ever play LA Noire? The driving is super touchy in that, now imagine that sensitivity on every game.)
Plus the Xbox One comes with a chord, so you can use batteries or plug it in. Plus it has a two year warranty, I believe.
If you are getting a Steam Machine, I would say go for a Steam controller, but if not eh.. it's not a bad controller, and most games won't have any issue. But it was really meant to work with the Steam machines. It would probably come down to a money thing for me, if I had to buy a new controller.