[英]Convert SQL query to linq asp.net
SELECT
O.OrderID, p.ProductName, op.Quantity,
m.MemberName, (op.Price * op.Quantity) as Total Price
FROM
o order, op order_product, m member, p product
WHERE
o.orderID = op.OrderID
AND op.ProductID = p.ProductID
AND o.MemberID = m.MemberID
AND o.OrderDateTime = @selectDate;
GROUP BY
o.OrderID
我是Linq的新手。 有谁知道如何将此SQL语句转换为linq?
我知道此查询效率不高,但我仍在学习。 我想生成可以将订单ID分组的每日交易报告。
我正在尽力自己编写LinQ,但是我如何结合4表?
var query = from o in db.order_product
where o.order.OrderDateTime == System.DateTime.Now
group o by o.order
into OrderList
select new {
OrderID = OrderList.Key.OrderID,
ProductName = OrderList.Key.order_product
};
我需要获取订单ID(在订单表中),产品名称(在产品表中),数量(在order_product表中)和成员名称(在成员表中)。
有一些可用的工具,例如LinqPad,SqlToLinq。 对于问题,请尝试以下类似的方法:
var retResult = from o in dbContext.order
inner join op in dbContext.order_product
on o.orderID equals op.OrderID
inner join p in dbContext.product
on op.ProductID equals p.ProductID
inner join m in dbContext.member
on o.MemberID equals m.MemberID
group o by o.OrderId into og
where o.OrderDateTime = @selectDate
select new {
OrderID = O.OrderID,
ProductName = p.ProductName,
Quantity = op.Quantity,
MemberName = m.MemberName,
TotalPrice = (op.Price * op.Quantity)
}
联接表非常简单。 在您的情况下,您需要内部联接,这是最简单的一种。 只需from
带有内部连接条件的子句追加
var query = from op in db.order_product.Where(o=>o.order.OrderDateTime == System.DateTime.Now)
from o in db.order.Where(o=>o.Id == op.OrderId)
from p in db.product.Where(p=>p.Id == op.ProductId)
from m in db.member.Where(m=>m.Id == o.MemberId)
group op by op.order
into OrderList
select new {
OrderID = OrderList.Key.OrderID,
ProductName = OrderList.Key.order_product.Name,
Quantity = OrderList.Key.order_product.Quantity,
MemberName = OrderList.Key.Member.Name
};
希望能有所帮助,亚历山德罗
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.