У меня есть эти классы:Как использовать условие для всех детей в Entity Framework
public class product
{
public int Id { get; set; }
public string Title { get; set; }
public Store Store { get; set; }
public ICollection<Color> Colors { get; set; }
}
public class Color
{
public int Id { get; set; }
public string Name { get; set; }
public product Product { get; set; }
}
public class Store
{
public int Id { get; set; }
public string Name { get; set; }
public string City { get; set; }
public ICollection<product> Products { get; set; }
}
И у меня есть этот список:
List<Store> Stores = new List<Store>
{
new Store { Id = 1, Name = "Lilo", City = "Teh",
Products = new List<product>
{
new product
{ Id = 1, Title = "Asus",
Colors = new List<Color> {
new Color { Id = 1, Name = "Blue"},
new Color { Id = 2, Name = "Orange"}
}
},
new product
{ Id = 2, Title = "Dell",
Colors = new List<Color> {
new Color { Id = 1, Name = "Yellow"},
new Color { Id = 2, Name = "Orange"},
new Color { Id = 3, Name = "Red"}
}
}
}
},
new Store{Id=2,Name="filo",City="san",
Products=new List<product>
{
new product{Id=3,Title="Asus",
Colors=new List<Color>{
new Color{Id=1,Name="Blue"},
new Color{Id=2,Name="Orange"}
}
},
new product{Id=4,Title="Dell",
Colors=new List<Color>{
new Color{Id=1,Name="Yellow"},
new Color{Id=2,Name="Lime"},
new Color{Id=3,Name="Red"}
}
}
}
}
};
Я хочу, чтобы выбрать все магазины, где Name = «Лило» и названия продуктов - «Dell» и Color = «Blue». Я хочу сделать это в Entity Framework, а не Linq.
Я использую этот код, но он не работает:
var test = Stores.Where(s => s.Name = "lilo" && s.Products.Where(p => p.Title == "Dell").FirstOrDefault().Title == "Dell" && s.Products.Where(c => c.Colors.Where(ct => ct.Name == "Blue").FirstOrDefault().Name = "Blue")).ToList();
Как я могу это сделать?
Что делать вы имеете в виду 'by Entity Framework'? вы подразумеваете использование 'Entity SQL'? LinqToEntity является наиболее подходящим инструментом (избегайте подверженности ошибкам) и чаще всего используется в EF, не уверен, почему вы не хотите использовать LINQ (ваш код даже использует LINQ - используется ли он для выражения того, что вы хотите?) – Hopeless
Вы хотите все Магазины, так что из ваших данных, то, что вы хотите, должно быть выражено так: Все магазины, имеющие *** любые *** продукты под названием «Dell», и эти продукты должны иметь по крайней мере один цвет с «голубым». Таким образом, запрос может выглядеть следующим образом: 'Stores.Where (s => s.Name ==" lilo "&& s.Products.Any (p => p.Title ==" Dell "&& p.Colors.Any (c = > c.Color.Name == «Синий»))). ToList() ' – Hopeless
Я хочу синтаксис LinqToEntity по методу. –