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
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étodoAdd
. 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: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,>