SQL到LINQ、分组依据和求和

SQL到LINQ、分组依据和求和,sql,linq,group-by,Sql,Linq,Group By,尝试以LINQ的形式编写一个简单的SQL查询 这是SQL: SELECT p.id, p.customer, SUM(pd.total_price) FROM purchases p JOIN purchases_details pd ON p.id = pd.purchase_id GROUP BY pd.purchase_id 到目前为止,我最好的LINQ: var purchases_with_details = from p in db.Purchases

尝试以LINQ的形式编写一个简单的SQL查询

这是SQL:

SELECT p.id, p.customer, SUM(pd.total_price)
FROM purchases p JOIN purchases_details pd ON p.id = pd.purchase_id
GROUP BY pd.purchase_id
到目前为止,我最好的LINQ:

var purchases_with_details = from p in db.Purchases
                             join pd in db.Purchases_details on p.Id equals pd.purchase_id
                             group pd by pd.purchase_id into pdg
                             select new { ??? };
问题是我只能在
选择新{}
中写入
pdg.*

我想写一些类似于
{p.id,p.customer,pdg.Sum(o=>o.total_price)}

有人知道怎么做吗?

试试:

     var purchases_with_details = from pd in db.Purchases_details
                                         group pd by pd.purchase_id into pdg
                                         //join *after* group
                                         join p in db.Purchases on pdg.Key equals p.Id
                                         select new
                                         {
                                             Id = p.Id,
                                             Cust =p.customer,
                                             TotalPrice = pdg.Sum(y => y.total_price)
                                         };
你可以试试这个

var purchases_with_details = from p in db.Purchases
                             join pd in db.Purchases_details on p.Id equals pd.purchase_id
                             group pd by pd.purchase_id into pdg
                             select new { 
                                 PurchaseID=pdg.Key.purchase_id,
                                 TOTAL=pdg.Sum(x=>x.total_price)
                             };

该求和表达式对您不起作用吗?求和表达式起作用,但我无法编写p.*部分(即p.id和p.customer)请尝试pdg.id、pdg.customers,直到获得“名称“p”在当前上下文中不存在”的SQL甚至无效
p.customer
无效,因为您没有将其包括在group by子句中。。。您是否也按该列进行分组?