Function to find a certificate in either the user or the machine store
I agree with @JanDotNet that by using a separate method you will gain readability but that's just my subective view. 



As you are asking about C#7 stuff I assume that you will use .NET >= 4.6. Starting with .NET 4.6 the X509Store implements IDisposable hence you should enclose the using of the X509Store inside a using block.  

Instead of using a concrete type you could use the var type  to declare your variables.  

This would result in  

public X509Certificate FindClientCertificate(string serialNumber)
{
    return Find(serialNumber, StoreLocation.CurrentUser) ?? Find(serialNumber, StoreLocation.LocalMachine);
}
private static X509Certificate Find(string serialNumber, StoreLocation location)
{
    using (var store = new X509Store(location))
    {
        store.Open(OpenFlags.OpenExistingOnly);
        var certs = store.Certificates.Find(X509FindType.FindBySerialNumber, serialNumber, true);
        return certs.OfType&lt;X509Certificate&gt;().FirstOrDefault();
    }
}