¿Prueba de claves anidadas con Json.NET?

Quiero filtrar una secuencia reactiva de cadenas codificadas json como esta:

{ "Key1" : {"key2":"value"},
  "key3" : "other values"
}

Quiero filtrar por elementos que tengan algún valor parakey2, Me gusta esto:

IDisposable valueQuery = globalEventStream
    .Select(e => JObject.Parse(e.EventArgs.Data))
    .Where(e => e["key1"]["key2"] != null)

Pero esto me da el error

Cannot access child value on Newtonsoft.Json.Linq.JValue

La única manera que puedo encontrar para evitar esto es hacer lo siguiente:

IDisposable deathDisposable = globalEventStream
    .Select(e => JObject.Parse(e.EventArgs.Data))
    .Where(e => e["key1"] != null).Select(e => e["key1"])
    .Where(e => e["key2"] != null).Select(e => e["key2"])

¿Hay alguna manera de filtrar las claves anidadas con una solaWhere ¿declaración?