CF Entity Framework filtrado de datos relacionados

Usando el siguiente ejemplo, intento recuperar todos los trabajos donde IsAssigned es falso.

public class Job {
  public int JobId { get; set; }
  ...
  public virtual ICollection<Bid> Bids { get; set; }
}

public class Bid {
  public int BidId { get; set; }
  public int JobId { get; set; }
  ...
  public bool IsAssigned { get; set; }
  ...
  public virtual Job Job { get; set; }
}

A continuación se muestra el método Ver para mostrar los trabajos disponibles.

public ViewResult AvailableJobs() {
  var jobs = db.Jobs.Include(j => j.Bids.Select(b => b.IsAssigned));
  return View(jobs.ToList());
}

Esto produce el siguiente error

Una ruta de inclusión especificada no es válida. El EntityType 'MvcTuition.DAL.Bid' no declara una propiedad de navegación con el nombre 'IsAssigned'.

¿Alguna idea de cómo puedo devolver todos los trabajos donde IsAssigned es falso?

preguntado el 03 de mayo de 12 a las 15:05

2 Respuestas

Trata

var jobs = db.Jobs.Include(j => j.Bids).Where(j => j.Bids.Any(b => b.IsAssigned));

contestado el 03 de mayo de 12 a las 15:05

Gracias @Eranga funciona de maravilla. Intenté algo similar pero sin suerte. - Sean Dooley

@SeanDooley Esto devolverá todas las ofertas de trabajos que tengan al menos una oferta asignada, no solo las ofertas asignadas de todos los trabajos. ¿Es esto lo que quiso decir con "filtrar datos relacionados"? - Danny Varod

var jobs = db.Jobs.Include(j => j.Bids.Where(b => b.IsAssigned));

contestado el 03 de mayo de 12 a las 15:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.