Autor Tema: Remover un dato en una lista de listas JSON  (Leído 139 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JuanArroz
  • [L0] Ladrón de espacio en la BD
  • Mensajes: 1
  • cl
  • Bienvenidos/as a Bomber Code
    • Ver Perfil
Remover un dato en una lista de listas JSON
« on: 22 Abril de 2021, 12:59 am »
Hola, llevo tiempo buscando una forma de meterme en una lista que está dentro de otra lista para borrar una lista según un dato que esté dentro de la lista que quiero eliminar, pero no lo he podido solucionar, esta es la cadena:

Código: [Seleccionar]
{
  "Empresas": [
    {
      "NombreEmpresa": "TEST1"
      "Empleados": [
        {
          "Nombre": "Matias Vargas",
          "FechaNacimiento": ""
        },
        {
          "Nombre": "Luis Pérez",
          "FechaNacimiento": ""
        }
      ],
    },
    {
      "NombreEmpresa": "TEST2",
      "Empleados": [
        {
          "Nombre": "Martin Sanchez",
          "FechaNacimiento": "",
        }
      ]
    }
  ]
}

Como ven quiero meterme dentro de "Empresas" para después meterme dentro de los empleados de la empresa que se llame "TEST1" y borrar a Luis Pérez (Su nombre y fecha de nacimiento)

Intenté hacer esto:

Código: [Seleccionar]
string readed = File.ReadAllText("empresas.json");
var jObject = JObject.Parse(readed);
JArray EmpleadosArray = (JArray)jObject["Empleados"].Where(obj => obj["NombreEmpresa"].Value<string>() == "TEST1");
var empleadoParaEliminar = EmpleadosArray.Where(obj => obj["Empleados"].Where(obj2 => obj2["Nombre"].Value<string>() == "Luis Pérez")));
 
foreach (var item in empleadoParaEliminar)
{
       EmpleadosArray.Remove(item);
}

Pero obviamente iba a dar errores y no iba a funcionar
Cita
"No se puede convertir implícitamente el tipo 'System.Collections.Generic.IEnumerable<Newtonsoft.Json.Linq.JToken>' en 'bool'"

Cita
"No se puede convertir expresión lambda en el tipo delegado indicado porque algunos de los tipos de valores devueltos del bloque no se pueden convertir implícitamente en el tipo de valor devuelto del delegado"

No necesito hacerlo así exactamente, si existe otra forma de acceder a los datos agradecería bastante que me la pasaran