Сложность и производительность, оба они зависят от вашей ситуации, если нет огромных данных, то Performance
не имеет значения, но иногда вам приходится принимать решение на основе вашей ситуации.Запустив ваш код, он должен подключиться к БД и выполнить запрос count
в каждой строке кода, и на 100% ясно, что подсчет одинаковых строк в БД более эффективен за один проход, поэтому вы можете сделать что-то вроде:
select p.Secenek.Deger,
....
sum(case when p.Secenek.Deger = 'Ht' then 1 else 0 end) haftaTatili,
sum(case when p.Secenek.Deger = 'Rt' then 1 else 0 end) resmiTatil
.....
from puantajlar p
group by p.Secenek.Deger
или вы можете сделать это более эффективным способом, сгруппировав их в один кадр, также как упомянуто @amd:
puantajlar
.Where(p => p.PersonelId == personelId && (p.Tarih >= baslangic && p.Tarih <= bitis))
.GroupBy(x => x.Secenek.Deger)
.Select(group => new { group.Key, Count = group.Count() })