gpt4 book ai didi

c# - Linq 在列表的每个项目中包含属性

转载 作者:行者123 更新时间:2023-12-05 04:07:22 24 4
gpt4 key购买 nike

我有这 4 个类。

它们在层次结构中使用:

  class Reception {
virtual List<Pallets> Pallets { get; set; }
float Weight { get; set; }
}

class Pallet {
virtual List<PalletDetail> PalletDetail { get; set; }
}

class PalletDetail {
virtual Package Package { get; set; }
int Quantity { get; set; }
}

class Package {
float Weight { get; set; }
}

对于每次接收我都想计算重量,所以我有这样的东西:

foreach (var reception in dbContext.Receptions
.Include(a => a.Pallets)
.Include(a => a.Pallets.Select(b => b.PalletDetail))
.ToList())
{
reception.Weight = reception.Pallets
.SelectMany(p => p.PalletDetail)
.Sum(r => r.Quantity * r.Package.Weight) ?? 0;
}

dbContext.SaveChanges();

问题是对象 Package 没有被包含在查询中,所以之前的 foreach 在每次迭代中生成一个 SQL 查询

问题:如何包含它? (语法是什么?)

最佳答案

你只需要包含这个包,用一个替换你所有的包含:

var receptions = dbContext.Receptions
.Include(r => r.Pallets
.Select(p => p.PalletDetail
.Select(pd => pd.Package)))
.ToList());

关于c# - Linq 在列表的每个项目中包含属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48769595/

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