Мои занятия как ниже.

public class ModelMMaster
{
    public string OrderID { get; set; }
    public bool IsActive { get; set; }
    public List<ModelDetail> _detail { get; set; }
}
public class ModelDetail
{
    public string SKUCode { get; set; }
    public int Quantity { get; set; }
    public double Price { get; set; }
}

И у меня есть список заказов, как

List<ModelMMaster> _listMaster = new List<ModelMMaster>

Я хочу вычислить Sum(Quantity * Price) с помощью LINQ, за _listMaster.

Я застрял в этом.

double _sum =_listMaster.Where(f => f.IsActive == true).Select(f => f._detail)......

Как я могу рассчитать сумму (количество * цена) из _listMaster с помощью LINQ?

2
ahmet kocadogan 27 Май 2019 в 16:09

2 ответа

Лучший ответ

Вы можете достичь этого несколькими способами

Вариант 1

double _sum =_listMaster.Where(f => f.IsActive)
                         .Sum(x=>x._detail.Sum(c=>c.Price * c.Quantity));

Вариант 2

double _sum =_listMaster.Where(f => f.IsActive)
                        .Aggregate(0d,(result,item)=>result + item._detail.Sum(x=>x.Price * x.Quantity));

Вариант 3

double _sum =_listMaster.Where(f => f.IsActive)
                        .SelectMany(x=>x._detail)
                        .Sum(x=>x.Price * x.Quantity);
7
Anu Viswan 27 Май 2019 в 13:34
        List<ModelMMaster> _listMaster = new List<ModelMMaster>();
        List<ModelDetail> _listDetail = new List<ModelDetail>();

        _listDetail.Add(new ModelDetail { SKUCode = "SKUCode-1", Quantity = 1, Price = 1 });
        _listMaster.Add(new ModelMMaster { OrderID = "OrderID-1", IsActive = true, _detail = _listDetail });

        _listDetail = new List<ModelDetail>();
        _listDetail.Add(new ModelDetail { SKUCode = "SKUCode-2", Quantity = 2, Price = 2 });
        _listDetail.Add(new ModelDetail { SKUCode = "SKUCode-3", Quantity = 3, Price = 3 });
        _listMaster.Add(new ModelMMaster { OrderID = "OrderID-2", IsActive = true, _detail = _listDetail });

        var totalSum = _listMaster.Where(t=>t.IsActive).SelectMany(t => t._detail).Sum(t => t.Quantity * t.Price);
4
Basil Kosovan 27 Май 2019 в 13:27