我使用 LinQPad 和 AdventureWorks LT DB 来学习 LINQ 查询。
我想将下面的 SQL 转换为 LINQ,它是成功的,并且得到了我想要的结果。
SELECT SalesOrderID, SUM(OrderQty) as TotalQty, SUM(UnitPrice) as TotalPrice
FROM SalesLT.SalesOrderDetail detail
WHERE detail.SalesOrderID = '71920'
GROUP BY detail.SalesOrderID;
LINQ 查询替代上述。
from detail in SalesOrderDetails
where detail.SalesOrderID.Equals(71920)
group detail by detail.SalesOrderID into g
select new {
SalesOrderID = g.Select(item =>item.SalesOrderID).Distinct().First(), /*Distinct() : Enumerable<Int32>, First() Int32 */
TotalQty = g.Select(item =>Convert.ToDouble(item.OrderQty)).Sum(),
TotalPrice = g.Select(item =>item.UnitPrice).Sum()
}
但我知道这是必要的使用
Select new { ... }
创造另一个struct
?是否可以缩短语法?
谢谢。