gpt4 book ai didi

c# - 在 C# 中使用 LINQ 的条件过滤器

转载 作者:行者123 更新时间:2023-11-30 16:54:46 29 4
gpt4 key购买 nike

我需要获取记录列表并根据条件过滤它们:如果 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
}

我也尝试使用 ContainsList<int> ,但我无法启动并运行它。

编辑

我得到的错误是:

Exception:Thrown: "The geography data type cannot be selected as DISTINCT because it is not comparable." (System.Data.SqlClient.SqlException)

最佳答案

我对此的看法。

给定要过滤的 serviceIds 列表:

var serviceIds = new List<int>{1, 5};

var partners = dbContext.Services
.Where(ser => serviceIds.Contains(ser.Id).SelectMany(ser => ser.PartnerServiceBrands)
.Select(psb => psb.Partner).Distinct();

关于c# - 在 C# 中使用 LINQ 的条件过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203753/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com