2014-01-21 3 views
0

Можно ли рассчитывать на контроллере, процент столбца, который принимает сумму другого номера в модели, так как ее знаменатель - так что-то вроде:Вычислить процентную колонку в контроллере для использования в целях

var sites = db.Calls.Where(x =>x.status != "Resolved" && x.status != "Closed").GroupBy(calls => new { calls.site }) 
      .Select(s => new SiteVM 
      { 
       Site = s.Key.site, 
       Number = s.Count(), 
       Perc = s.Count()/s.Sum(x => x.site.Count()) 
      }).OrderByDescending(z => z.Number); 

Я знаю, что эта часть не является правильным: s.Sum (х => x.site.Count())

Так Проц должно быть число, деленное на сумму s.Count, например:

Site  Number Perc (number/sum of number) 
London  100  50 
Birmingham 30  15 
Glasgow  70  35 

Спасибо,

Марк

ответ

1

Вы можете сделать это:

var calls = db.Calls.Where(x =>x.status != "Resolved" && x.status != "Closed").ToList(); 
var callsCount = calls.Count(); 

var sites = calls.GroupBy(calls => new { calls.site }) 
      .Select(s => new SiteVM 
      { 
       Site = s.Key.site, 
       Number = s.Count(), 
       Perc = callsCount/s.Count() * 100 
      }).OrderByDescending(z => z.Number); 
+0

может бросить деление на ноль исключением первой проверки, если s.Count() = 0 –

+0

@NitinVarpe Право, мы должны добавить эту проверку! – Egor4eg

Смежные вопросы