public static MonthPerformViewModel Create(Project project, int year, int month, BalanceViewModel balance, IEnumerable <Plan> plans, IEnumerable <Perform> performs) { var model = new MonthPerformViewModel { ProjectId = project.ProjectId, ProjectName = project.Name, ProjectIncoming = project.ContractAmount, EstimatingProfit = project.EstimatingProfit, Year = year, Month = month, IncomingBalance = balance?.Incoming, SettlementBalance = balance?.Settlement, RetrievableBalance = balance?.Retrievable, PlanData = (from p in plans where p.Month == month select p).SingleOrDefault(), TotalPlanIncoming = (from p in plans where p.Month < month select p.Incoming).Sum(), TotalPlanSettlement = (from p in plans where p.Month < month select p.Settlement).Sum(), TotalPlanRetrievable = (from p in plans where p.Month < month select p.Retrieve).Sum(), TotalIncoming = (from p in performs where p.Month < month select p.Incoming).Sum(), TotalSettlement = (from p in performs where p.Month < month select p.Settlement).Sum(), TotalRetrievalbe = (from p in performs where p.Month < month select p.Retrieve).Sum(), PerformId = (from p in performs where p.Month == month select p).SingleOrDefault()?.Id, PerformData = (from p in performs where p.Month == month select p).SingleOrDefault(), }; return(model); }