У меня есть таблица свойств, связанных с коллекцией Адреса
Вот модель
[Table("PM101Properties")]
public class Property: FullAuditedEntity, IMustHaveTenant
{
[Required]
public virtual Status Status { get; set; }
public virtual int TenantId { get; set; }
public virtual int? LandlordId { get; set; }
public virtual int? AgentId { get; set; }
public virtual int PropertyTitleId { get; set; }
public virtual int BuildingTypeId { get; set; }
public virtual int PropertyTypeId { get; set; }
[ForeignKey("LandlordId")]
public virtual Landlord Landlord { get; set; }
[ForeignKey("AgentId")]
public virtual Agent Agent { get; set; }
[ForeignKey("PropertyTitleId")]
public virtual PropertyTitle PropertyTitle { get; set; }
[ForeignKey("BuildingTypeId")]
public virtual BuildingType BuildingType { get; set; }
[ForeignKey("PropertyTypeId")]
public virtual PropertyType PropertyType { get; set; }
public virtual ICollection<PropertyAddress> Addresses { get; set; }
public virtual ICollection<PM101Site> Sites { get; set; }
public virtual ICollection<PropertyAsset> PropertyAssets { get; set; }
}
Я пытаюсь создать метод фильтра для адресов (у меня есть свойство типа PostCode, Town и т. Д. В объекте Adresses) и еще несколько полей
Вот мой метод для этого
public async Task<PagedResultDto<PropertyDto>> GetProperties(GetPropertyInput input)
{
var query = _propertyRepository.GetAll()
.Include(x => x.Addresses)
.Include(x => x.BuildingType)
.Include(x=> x.PropertyType)
.Include(x=> x.PropertyTitle)
.Include(x=> x.Agent)
.Include(x=> x.Landlord)
.Include(x=> x.Sites)
.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
p => p.PropertyTitle.Name.Contains(input.Filter.Trim(), StringComparison.OrdinalIgnoreCase) ||
p.PropertyType.Name.Contains(input.Filter.Trim(), StringComparison.OrdinalIgnoreCase) ||
p.Landlord.Name.Contains(input.Filter.Trim(), StringComparison.OrdinalIgnoreCase)||
p.Agent.Name.Contains(input.Filter.Trim(), StringComparison.OrdinalIgnoreCase)||
);
var propertyCount = await query.CountAsync();
var properties = await query.OrderBy(input.Sorting).PageBy(input).ToListAsync();
return new PagedResultDto<PropertyDto>(
propertyCount,
ObjectMapper.Map<List<PropertyDto>>(properties)
);
}
Все работает отлично, но я не могу получить, например, Addresses.PostCode, например
p.Addresses.PostCode.Contains(input.Filter.Trim(), StringComparison.OrdinalIgnoreCase)
Как я могу отфильтровать это свойство?