Utilizando una propiedad de lista para filtrar un DbSet con LINQ
Tengo un evento que tiene una lista de tareas del personal:
public class Evento()
{
public Guid? StaffId { get; set; }
}
public class TareaDelPersonal()
{
public Guid StaffId { get; set; }
public Guid TaskId { get; set; }
}
¿Cómo haría algo como esto para obtener todos los eventos para una lista de miembros del personal?
var tareasDelPersonal = new List<tareadelpersonal>()
{
new TareaDelPersonal () { StaffId = "guid1", TaskId = "guid2" },
new TareaDelPersonal () { StaffId = "guid3", TaskId = "guid4" }
};
queryable = _db.Eventos.AsQueryable()
.Where(evento =>
tareasDelPersonal.Any(tp => tp.StaffId == evento.StaffId)
);
Actualmente obtengo este error al ejecutar lo anterior:
La expresión LINQ ”DbSet
.Where(e => __tareasDelPersonal
.Any(tp => (Nullable
El objetivo sería que esto devolviera solo el segundo y tercer evento aquí
var eventos = new List
new Event() { StaffId = null },
new Event() { StaffId = “guid1” },
new Event() { StaffId = “guid2” },
new Event() { StaffId = “guid20” },
new Event() { StaffId = null }
}
davy.ai
Puede utilizar la cláusula
Where
para filtrar los eventos en función de losStaffId
s en la listastaffTasks
. Dado queStaffId
enEvent
es nulo, debe convertirlo explícitamente aNullable
antes de compararlo conStaffId
enStaffTask
:csharp)st.StaffId == evento.StaffId)
queryable = _db.Events.AsQueryable()
.Where(evento =>
staffTasks.Any(st => (Nullable
);