i当前设置了2个表。我可以轻松地包含关联的表,但我希望能够在Where子句中使用条件,并且不确定我需要在哪里更改它。关系是一个人可以拥有许多地址
public partial class People
{
public People()
{
Address = new HashSet<Address>();
}
public int Id { get; set; }
public int Name { get; set; }
public virtual ICollection<Address> Address { get; set; }
}
public partial class Address
{
public int id { get; set; }
public string State { get; set; }
public int PeopleId { get; set; }
public People People { get; set; }
}
我当前可以做到这一点,它包含关联的数据,但是返回的数据超出了我的需求。
using (DBContextdb = new DBContext())
{
var oooo = db.People.IncludeOptimized(x => x.Address).ToListAsync();
}
我想按照这些方式做一些事情,但是我需要正确建立关系。这实际上并不能让我在地址类中选择状态的属性。
using (DBContext db = new DBContext())
{
var oooo = db.People.IncludeOptimized(x => x.Address).Where(x => x.Address.State == "Florida").ToListAsync();
}
您无法访问'状态'属性,因为'x.Address'是一个集合。国家 - 特权也是Int类型的。但是您尝试将其与字符串"佛罗里达"进行比较。因此,您还应该改变这一点。因此,如果您需要具有"佛罗里达州"状态的所有地址,则可以使用类似的东西:
简化的模型类:
public class Model1
{
public IQueryable<People> People { get; set; }
public IQueryable<Address> Addresses { get; set; }
public Model1()
{
People = new List<People>().AsQueryable() ;
Addresses = new List<Address>().AsQueryable();
}
}
新地址/人类课程:
public partial class People
{
public People()
{
Address = new HashSet<Address>();
}
public int Id { get; set; }
public int Name { get; set; }
public virtual ICollection<Address> Address { get; set; }
}
public partial class Address
{
public int Id { get; set; }
public string State { get; set; }
public int PeopleId { get; set; }
public People People { get; set; }
}
然后您可以使用以下代码:
Model1 model = new Model1();
var queryResult = model.Addresses.Where(a => a.State == "Florida");
编辑这是您要查找的查询:
IQueryable<People> queryResult = model.Addresses.Where(a => a.State == "Florida").Select(a => a.People);