es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C# – Ternary dentro de objeto anónimo

A continuación se muestra un objeto anónimo, suponiendo que el objeto Course no puede tener un objeto Progress relacionado, por lo que para evitar que Progress devuelva una matriz vacía, estoy intentando hacer que devuelva un objeto con valores iguales a cero:

var cursos = await _context.courses
    .Include(c => c.Progress)
    .ToListAsync();

var misCursos = cursos
    .Select(c => new
    {
        Título = c.Title,
        Progreso = (c.Progress.ToList().Select(x => new { x.CurrentChapter, x.Completed }) != null)
            ? (c.Progress.ToList().Select(x => new { x.CurrentChapter, x.Completed }))
            : (new List<Dictionary<string, int>> { { "CurrentChapter", 0 }, { "Completed", 0 } })
    })
    .ToList();

return Ok(misCursos);

Sin embargo, estoy obteniendo un error en la última parte del ternario como sigue:

Ninguna sobrecarga del método ‘Add’ toma 2 argumentos

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo porque new List<><string, int="">>() crea una lista de diccionarios, y cada diccionario necesita un par clave-valor que se agregue utilizando el método Add. En este caso, la sintaxis { "CurrentChapter", 0 }, { "Completed", 0 } es incorrecta, ya que intenta agregar dos objetos en lugar de un par clave-valor. En su lugar, la sintaxis correcta sería:

    new List<><string, int="">> { 
        new Dictionary<string, int=""> { { "CurrentChapter", 0 }, { "Completed", 0 } } 
    }
    

    Esto crea una lista de un diccionario con dos pares clave-valor. Por lo tanto, el bloque de código corregido debería verse así:

    “`
    var myCourses = courses
    .Select(c => new
    {
    Title = c.Title,
    Progress = (c.Progress.ToList().Select(x => new { x.CurrentChapter, x.Completed }) != null)
    ? (c.Progress.ToList().Select(x => new { x.CurrentChapter, x.Completed }))
    : (new List<><string, int=””>> {
    new Dictionary<string, int=””> { { “CurrentChapter”, 0 }, { “Completed”, 0 } }
    })
    })
    .ToList();

    return Ok(myCourses);
    “`</string,></string,></string,></string,></string,>

Comments are closed.