Testando chaves aninhadas com o Json.NET?

Eu quero filtrar um fluxo reativo de seqüências de caracteres codificadas json como este:

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

Quero filtrar itens que tenham algum valor parakey2, como isso:

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

Mas isso me dá o erro

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

A única maneira de encontrar uma maneira de contornar isso é fazer o seguinte:

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"])

Existe uma maneira de filtrar chaves aninhadas com um únicoWhere declaração?

questionAnswers(1)

yourAnswerToTheQuestion