如何解决如何使用linq对Entity Framework中的列求和并将其与另一个表联接
我有下面的StockTransaction
表。
此表中记录了具有特定品牌的库存进出的所有物品,因此我需要知道进入库存的商品数量,反之亦然。
例如:库存中有10件阿迪达斯(Adidas)品牌的T恤,而售出的5件T恤应该仍在库存中。
我想根据Quantity
列和GoodsID
列对Input
列求和
然后我将其与GoodsBrand
表一起加入。
注意:StockTransaction
表和GoodsBrand
表之间没有关系。我只想将StockTransation
与GoodsBrand
一起使用特定品牌的商品。
我想要这样的东西:
有解决方案吗?
预先感谢
解决方法
说这可能是较短的版本有点模糊:
var result = transactions
.Join(goodbBrands,tr => tr.GoodsID,gb => gb.GoodsID,((transaction,brand) => new
{
transaction,brand
}))
.Join(goods,gbs => gbs.transaction.GoodsID,g => g.ID,(gbs,good) => new
{
Brand = gbs.brand,Transaction = gbs.transaction,Good = good
})
.Join(brands,gb => gb.Brand.BrandID,b => b.ID,((gbs,brds) => new
{
Brand = brds,Good = gbs.Good,Transaction = gbs.Transaction
})).Select(item => new
{
GoodsName = item.Good.Name,Brand = item.Brand.Name,Qty = item.Transaction.Quantity
});
但是实际上最好使用实体框架Navigation Properties和Loading Related Data的Include
为表创建正确的模型关系。
这样,上面的大量查询可以变得更加简单:
var res = transactions.Include(tr => brands)
.Include(tr => goods)
.Select( ... );
,
要选择数量,您应该可以:
firstTable.Where(x => x.Input).GroupBy(x => x.GoodsID).Select(x => x.Sum(y => y.Quantity));
有据可查,我将保留联接作为练习。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。