This is what works for me in CSOM (C#) in a SharePoint online environment. The code sample below only returns the first result, even if the search result returns more than one item (naturally you can use LINQ as you please). You did not specify your working environment, but I would think that there is an equivalent method for on-premise C# code.
var keywordQuery =
new Microsoft.SharePoint.Client.Search.Query.KeywordQuery(ctx);
keywordQuery.QueryText = keyword;
keywordQuery.RowLimit = 500;
var searchExecutor =
new Microsoft.SharePoint.Client.Search.Query.SearchExecutor(ctx);
var results = searchExecutor.ExecuteQuery(keywordQuery);
ctx.ExecuteQuery();
var bytitle = results.Value.FirstOrDefault().ResultRows.Where(c => c["Title"].ToString() == keyword);