我想过滤实体的导航属性。我们有两个Poco课
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; }
}
客户端包含称为产品的导航集合属性,该属性将包含客户端正在使用或已使用的产品。
并且产品具有客户开始使用产品的年度财产。
现在我想要一个在2012年开始将这些产品与这些产品一起使用的客户。
目前我正在下面错误的查询
this.ObjectContext.Clients.Include("Products").
Where(d => d.Name =="John" && d.Products.Where(e => e.Year == 2012).Count() > 0).FirstOrDefault();
我知道这是错误的查询。我只想检索具有2012年产品的客户。但是上面的查询将为我提供所有产品记录的客户。
在此先感谢您的解决方案。
最佳答案
假设这是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()
});
关于c# - 如何根据相关集合中实体的值进行过滤?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23957100/