我想过滤实体的导航属性。我们有两个Poco Classes
public class Client
{
public int Id { get; set; }
public string Name { get; set; }
public List<Product> Products { get; set; }
}
public class Product
{
public int Id { get; set; }
public string ProductName { get; set; }
public int Year { get; set; }
}
客户端包含名为Products的导航集合属性,该属性将包含Product客户端正在使用或已使用过的。
并且产品具有客户已开始使用产品的年份属性。
现在我想要一个已经开始在2012年使用这些产品的客户。
目前我正在进行以下错误查询
this.ObjectContext.Clients.Include("Products").
Where(d => d.Name =="John" && d.Products.Where(e => e.Year == 2012).Count() > 0).FirstOrDefault();
我知道这是错误的查询。我想检索只有2012年产品的客户。但是上面的查询会给我客户提供所有产品记录。
先谢谢你的解决方案。
答案 0 :(得分:1)
假设这是LINQ问题,客户端和产品之间存在关联。
this.ObjectContext.Clients.Where(d => d.Name =="John" && d.Products.Any(e => e.Year == 2012));
如果您希望对象只包含2012年的客户和产品。
更新假设名称,ID和产品上有设置者。
this.ObjectContext.Clients.Where(d => d.Name == "John").Select(d => new Client(){
Name = d.Name,
Id = d.Id,
Products = d.Products.Where(e => e.Year == 2012).ToList()
});