None of the proposed solutions will work every time. Hyperlinks cannot be treated like other clickable web elements such as buttons. A hyperlink is disabled by removing the href attribute from the anchor tag. For other components, the web driver can interrogate the found web element to see if is enabled or clickable. Consider the following scenario:
<a id="dummyID" target="_blank">Google</a>
WebElement element = new WebDriverWait(driver, 1).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[text()='Google']")));
element.click();
Because the ExpectedConditions class cannot make a determination of the "clickability" of the link like it can do with an input element (such as button), it will not throw a TimeoutException and will allow your test to click a dead (disabled) link. Therefore, for hyperlinks exclusively, you must either search for an anchor tag with an href attribute in it, or test the consequence of the click (i.e. a change in URL).
Another thing you should try to avoid is the use of //* to locate web elements. You can run into situations where more than one element will be found and you'll end up interacting with the incorrect one.
Lastly, the problem with driver.FindElement(...) is that you can run into issues with NoSuchElement exceptions if the page has not loaded fully (unless you set an implicit wait of some kind). The preferred way to wait for an element to interact with, it by using explicit waits, like the Java example I provided above. Since I do not know what issue you ran into, I have to assume this could be your issue. If this is not the issue, perhaps the element is inside an iframe in which case, you will need to tell the web driver to switch to the correct iframe prior to interacting with the element.