1対多の関係にある2つのエンティティがあり、子アイテムのプロパティをフィルタリングするマスターエンティティを選択しようとしています。
例えば:
public class Pedido
{
public int Id { get; set; }
public string Descricao { get; set; }
public virtual ICollection<PedidoItem> Itens { get; set; }
}
public class PedidoItem
{
public int Id { get; set; }
public int PedidoId { get; set; }
public Pedido Pedido { get; set; }
public string Descricao { get; set; }
public int Status { get; set; }
}
public class DataInit : DropCreateDatabaseAlways<Data>
{
protected override void Seed(Data context)
{
context.Pedidos.Add(new Pedido {
Descricao = "PEDIDO UM",
Itens = new List<PedidoItem> {
new PedidoItem {
Descricao = "ITEM UM",
Status = 0 },
new PedidoItem{
Descricao = "ITEM DOIS",
Status = 0 },
new PedidoItem{
Descricao = "ITEM TRES",
Status = 0 },
new PedidoItem{
Descricao = "ITEM QUATRO",
Status = 1 }
}
});
context.SaveChanges();
base.Seed(context);
}
public DataInit()
{
}
}
public class Data : DbContext
{
public DbSet<Pedido> Pedidos { get; set; }
public Data()
{
Database.SetInitializer(new DataInit());
}
}
class Program
{
static void Main(string[] args)
{
Data dt = new Data();
var pedidos = from ped in dt.Pedidos
where ped.Itens.Any(item => item.Status == 1)
select ped;
var lista = pedidos.ToList();
}
}
データベースにPedidoエンティティが1つと、ステータスが1のアイテムが1つだけあり、コレクションにステータスが1のこのアイテムのみを返したいのですが、どうすればよいですか?
フィルタリングされたアイテムが1つだけのPedidoエンティティを返したい(item.Status == 1)