GroupBy 帶條件分組求和


 public List<Tuple<string, Tuple<decimal, decimal, decimal, decimal>, Tuple<decimal, decimal, decimal, decimal>>> GetTupeDate(List<ASSENTS_PUBLIC> publicList) 
        {
            //按條件分組求和
            var grouplist = publicList.GroupBy(t => t.WORKUNIT).Select(g => new
            {
                unitName = unitDal.FindModelByID(Convert.ToInt32(g.FirstOrDefault().WORKUNIT)).UNITNAME,

                Sum = g.Where(c => c.USESTATE == "閑置").Count(),

                originalvalue = Convert.ToDecimal(g.Where(c => c.USESTATE == "閑置").Sum(t => t.ORIGINALVALUE)),

                networth = Convert.ToDecimal(g.Where(c => c.USESTATE == "閑置").Sum(t => t.NETWORTH)),

                impairment = Convert.ToDecimal(g.Where(c => c.USESTATE == "閑置").Sum(t => t.IMPAIRMENT)),


                Sum1 = g.Where(c => c.USESTATE == "出租" || c.USESTATE == "部分出租").Count(),

                originalvalue1 = Convert.ToDecimal(g.Where(c => c.USESTATE == "出租" || c.USESTATE == "部分出租").Sum(t => t.ORIGINALVALUE)),

                networth1 = Convert.ToDecimal(g.Where(c => c.USESTATE == "出租" || c.USESTATE == "部分出租").Sum(t => t.NETWORTH)),

                impairment1 = Convert.ToDecimal(g.Where(c => c.USESTATE == "出租" || c.USESTATE == "部分出租").Sum(t => t.IMPAIRMENT))
            });
            //List<Tuple<單位名稱, Tuple<項數,閑置原值, 閑置凈值, 閑置減值准備>, Tuple<項數,出租或部分出租原值, 出租或部分出租凈值, 出租或部分出租減值准備>>>
            List<Tuple<string, Tuple<decimal, decimal, decimal, decimal>, Tuple<decimal, decimal, decimal, decimal>>> TupList = new List<Tuple<string, Tuple<decimal, decimal, decimal, decimal>, Tuple<decimal, decimal, decimal, decimal>>>();
            foreach (var group in grouplist)
            {
                Tuple<decimal, decimal, decimal, decimal> temp = new Tuple<decimal, decimal, decimal, decimal>(group.Sum, group.originalvalue, group.networth, group.impairment);
                Tuple<decimal, decimal, decimal, decimal> temp1 = new Tuple<decimal, decimal, decimal, decimal>(group.Sum1, group.originalvalue1, group.networth1, group.impairment1);
                Tuple<string, Tuple<decimal, decimal, decimal, decimal>, Tuple<decimal, decimal, decimal, decimal>> temp2 = new Tuple<string, Tuple<decimal, decimal, decimal, decimal>, Tuple<decimal, decimal, decimal, decimal>>(group.unitName, temp, temp1);
                TupList.Add(temp2);
            }
            return TupList;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM