1

私はLINQに非常に慣れていないため、テーブルをグループ化するのに非常に苦労しているため、すべてが合計されます。複数の購入がある場合でも、50ドル以上購入したすべての顧客を表示するためにこれを取得しようとしています。linq を使用して SQL データベースで。これが私がこれまでに持っているものです、助けてください。

 public class TopCustomerVM
 {
    public string Name { get; set; }
    public decimal DollarsSold { get; set; }

    public static List<TopCustomerVM> GetResults()
    {
        ACEEntities db = new ACEEntities();
        return (from c in db.Customers
                join o in db.Orders on c.CustomerId equals o.CustomerId
                join l in db.OrderLines on o.OrderId equals l.OrderId

                into x
                select new TopCustomerVM {                           
                        Name = c.FirstName + c.LastName,
                        DollarsSold = x.Sum(asdf => asdf.UnitCost * asdf.Quantity)
                       })
                       .OrderByDescending(lkj => lkj.DollarsSold)
                       .Where(lkj => lkj.DollarsSold > 50)
                       .ToList();            
    }
}
4

1 に答える 1

0

私はこのような何かがあなたに望ましい出力を与えると信じています:

from record in 
    (from c in Customers
    join o in Orders on c.Id equals o.CustomerId
    join ol in OrderLines on o.Id equals ol.OrderId
    let customerAndLine = new { Name = c.FirstName + ' ' + c.LastName, DollarsSold = ol.UnitCost * ol.Quantity }
    group customerAndLine by customerAndLine.Name into grp  
    select new { Name = grp.Key, DollarsSold = grp.Sum(r => r.DollarsSold) })
where record.DollarsSold > 50
orderby record.DollarsSold descending
select record
于 2013-03-14T03:28:31.953 に答える