'Filter with a sub level query EF linq

I have this data from DB

  "objeto": {
    "id": 1,
    "nombre": "Selección",
    "status": false,
    "VisitasVariableTipo": [
      {
        "id": 1,
        "idVariableTipo": 1,
        "VariablesTipo": {
          "id": 1,
          "titulo": "Fecha de Visita Selección",
          "Variables": [
            {
              "id": 1,
              "respuesta": "01/07/2021",
              "RespuestasVariables": [
                {
                  "id": 1,
                  "idRespuestaTipoFirma": 1,
                  "idVariable": 1,
                  "RespuestasVariablesDetalle": [
                    {
                      "id": 1,
                      "idRespuestaVariable": 1,
                      "idNotaClinica": 8,
                      "etiqueta": null,
                    }
                  ]
                },
                {
                  "id": 1002,
                  "idRespuestaTipoFirma": 1002,
                  "idVariable": 1,
                  "RespuestasVariablesDetalle": [
                    {
                      "id": 1002,
                      "idRespuestaVariable": 1002,
                      "idNotaClinica": 5,
                      "etiqueta": null,
                    }
                  ]
                }
              ],
              "Variables": [],
              "CatalogoDatosTipo": {
                "id": 0,
                "tipo": null,
                "CatalogoDatos": null
              }
            },
          ]
        }
      }
    ]
  }

And I want to use linq to filter the that and filter by RespuestasVariablesDetalle.idNotaClinica, for example

var visita = db.NotasClinicas
                    .Where(nc => nc.Visitas.Visitas_Variable_Tipo
                    .Any(vvt => vvt.Variables_Tipo.Variables
                    .Any( v => v.Respuestas_Variables
                    .Any(rr =>  rr.RespuestasVariablesDetalle.idNotaClinica == 5  ) ) ) ).First().Visitas;

I don't know what method should I use to make this work, I want to get the next results

  "objeto": {
    "id": 1,
    "nombre": "Selección",
    "status": false,
    "VisitasVariableTipo": [
      {
        "id": 1,
        "idVariableTipo": 1,
        "VariablesTipo": {
          "id": 1,
          "titulo": "Fecha de Visita Selección",
          "Variables": [
            {
              "id": 1,
              "respuesta": "01/07/2021",
              "RespuestasVariables": [
                {
                  "id": 1002,
                  "idRespuestaTipoFirma": 1002,
                  "idVariable": 1,
                  "RespuestasVariablesDetalle": [
                    {
                      "id": 1002,
                      "idRespuestaVariable": 1002,
                      "idNotaClinica": 5,
                      "etiqueta": null,
                    }
                  ]
                }
              ],
              "Variables": [],
              "CatalogoDatosTipo": {
                "id": 0,
                "tipo": null,
                "CatalogoDatos": null
              }
            },
          ]
        }
      }
    ]
  }

I don't know if there is a method that I can use, or should I filter the data after getting the result, but I don't want because I believe may be a slower query



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source