gpt4 book ai didi

c# - Entity Framework 中的 Linq SelectMany

转载 作者:行者123 更新时间:2023-11-30 17:36:14 29 4
gpt4 key购买 nike

我正在使用 Entity Framework 。我的典型访问功能是这样的:

    public IEnumerable<Product> Category(string category, int term)
{
using (var uow = new UnitOfWork(Connections.LoanComparision))
{
var r = new Repository<Product>(uow.Context);

return r.Find(x => x.Category == category)
.Include(x => x.ProductDetails)
.Include(x => x.ProductRates)
.Include(x => x.Provider)
.ToList();
}
}

您会从上面的代码中注意到两件事。

  • 查询返回产品列表,其类别包括链接实体。
  • 每个产品都有许多 ProductDetail 行。

我想做的(但一直无法解决)是在 ProductDetails 表上应用选择标准。

.Find(我的函数)中的内容可以用标准的 .Where 子句替换,但我需要过滤 MinTerm 和 MaxTerm(在 ProductDetails 中),但仍返回完整的 Product 数据集(包括链接的实体),不仅仅是产品详细信息。

Where(x => term >= x.MinTerm && term <= x.MaxTerm)

我可以通过首先引用 ProductDetails 并链接到其他表来弄清楚如何做到这一点,但不能在此配置中。可能吗?

最佳答案

如果 ProductProductDetail 之间的关系是一对多,您可以这样做:

var query= context.ProductDetails.Include(pd=>pd.Product.ProductRates)
.Include(pd=>pd.Product.Provider)
.Where(pd=> pd.Product.Category == category
&& term >= pd.MinTerm && term <= pd.MaxTerm);

如果您想要产品列表,您可以执行以下操作:

var query1=query.Select(pd=>pd.Product).Distinct().ToList();

关于c# - Entity Framework 中的 Linq SelectMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39960150/

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