![](/img/trans.png)
[英]Return a row and sum of some Rows in the Associated table in entity framework
[英]select one table and sum row in another table with entity framework
我有两个表是产品和订单,我要选择所有产品,并以计数的产品。 例:
Product
ID | Name | ....
P001 ProductA ....
P002 ProductB ....
P003 ProductC ....
P004 ProductD ....
Order
ID | CustomerID | ...
O001 C001
O002 C002
OrderDetails
ID | OrderID | ProductID | Quantity | ....
1 O001 P001 2 ....
2 O001 P002 1 ....
3 O002 P002 4 ....
4 O002 P004 1 ....
Result is:
ID | Name | Count | ....
P001 ProductA 2 ....
P002 ProductB 5 ....
P003 ProductC 0 ....
P004 ProductD 1 ....
我在下面尝试代码但是错了
db.tblProducts
.Join(db.tblOrderDetails, p => p.ProductID, o => o.ProductID, (p, o) => new { Product = p, OrderDetails = o })
.Select(x => new { x.Product , x.OrderDetails })
.ToList();
解析数据以查看{ Product = MvcWebProject.Entities.tblProduct, OrderDetails = MvcWebProject.Entities.tblOrderDetails }
,但是我无法选择值。
foreach (var item in ViewBag.products)
{
<p>@item.Product</p> //'object' does not contain a definition for 'Product'
}
未经测试,希望这可以帮助您入门:
from product in db.tblProducts
let summedCount=(from orderDetail in product.OrderDetails
select orderDetail.Quantity).Sum()
select new {Id=product.Id,Name=product.Name,Count=summedCount}
我创建包含tblProduct的新模型并计数
public class Product
{
public Product()
{
Prod = new tblProduct();
}
public tblProduct Prod { get; set; }
public Nullable<int> Count { get; set; }
}
控制器中的代码
var products = db.tblProducts
.Select(x => new Product {
Prod = x,
Count = db.tblOrderDetails
.Where(z => z.ProductID == x.ProductID)
.Sum(z => z.Quantity) })
.ToList();
return View(products)
并鉴于
foreach (var item in Model)
{
<p>@item.Prod.MSP</p>
<p>@{int? c = 0;if (item.Count == null) { c = 0; } else { c = item.Count; }}@c</p>
}
尝试这个
select Product.ID, Product.Name, SUM(OrderDetails.Quantity) as [Count] from Product inner join
OrderDetails on Product.ID=OrderDetails.Quantity group by Product.ID;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.