我需要获取一份记录列表并根据条件进行筛选:如果serviceId等于1,则需要将该结果与serviceId等于5的结果合并。
模型:
public class Partner
{
[Key]
public int Id { get; set; }
public DbGeography Location { get; set; }
public virtual ICollection<PartnerServiceBrand> PartnerServiceBrands { get; set; }
}
public class PartnerServiceBrand
{
[Key]
public int Id { get; set; }
public virtual Partner Partner { get; set; }
public virtual Service Service { get; set; }
}
public class Service
{
[Key]
public int Id { get; set; }
public virtual ICollection<PartnerServiceBrand> PartnerServiceBrands { get; set; }
}
我为一个过滤器写的代码:
var serviceId = 1;
var partners = dbContext.Partners.Where(p => p.PartnerServiceBrands.Select(psb => psb.Service.Id).Contains(serviceId));
我尝试做:
if (serviceId == 1)
{
var partners2 = dbContext.Partners.Where(p => p.PartnerServiceBrands.Select(psb => psb.Service.Id).Contains(5));
partners = partners.Union(partners2); // Error
}
我还尝试使用Contains
和一个List<int>
,但是我没有成功运行它。
编辑
我得到的错误是:
异常:“The geography data type cannot be selected as DISTINCT because it is not comparable.” (System.Data.SqlClient.SqlException)