Onur Keçe

Masaüstü Yazılım Geliştirici

Web Geliştirici

0

Sepetinizde ürün bulunmuyor.

Onur Keçe

Masaüstü Yazılım Geliştirici

Web Geliştirici

Blog Post

MVC Group By Kullanımı

13 Ekim 2020 MVC
MVC Group By Kullanımı

Bu yazımızda bir cari tablosunda bulunan şehirler Group By kullanarak gruplayacağız. Öncelikle bir SQL tablosuna ve bir tane MVC Controller’e ihtiyacımız var. Ben IstatistikController adında Controller tanımladım. SQL tablomuz aşağıdaki gibidir.

Gruplandırma işlemi için, gruplandırma içerisine alacağım iki tane alanım olacak. Biri müşterinin şehri, diğeri ise o şehirde kaç tane kayıt olduğunu bulan Count ifadesidir. Fakat MVC bunları tutabilmek için IEnumerable<> olarak tutulmasını istiyor. Kısaca bizden gruplandıracağımız ifadeler için bir tane sınıf oluşturmamızı istiyor. Ben sınıfımı Model/Siniflar klasörü içinde oluşturdum ve Sinifim adında bir sınıf oluşturdum.

namespace MvcOnlineTicariOtomasyon.Models.Siniflar
{
   public class Sinifim
   {
      public string Sehir { get; set; }
      public int Sayi { get; set; }
   }
}

Sınıfı oluşturduktan sonra Controller’imize dönüyoruz ve aşağıdaki kodları yazıyoruz.

public ActionResult GrupByTablolar()
{
   var sorgu = from x in c.Carilers
   group x by x.CARISEHIR into g
   select new Sinifim
   {
      Sehir = g.Key,
      Sayi = g.Count()
   };
   return View(sorgu.ToList());
}

Yukarıda yazdığımız sorgu Cariler tablosundan CARISEHIR’i gruplayıp “g” adında soyut bir değere ekledik. Daha sınıf içerinden Sehir ve Sayi değerlerinin atamasını sağladık. Şimdi ise GrupByTablolar()’dan bir View türetelim ve kodlarımızı yazmaya başlayalım.

@model IEnumerable<MvcOnlineTicariOtomasyon.Models.Siniflar.Sinifim>
@{
ViewBag.Title = "GrupByTablolar";
Layout = "~/Views/Shared/AdminLayout.cshtml";
}
<div class="card-body p-0">
<table class="table">
<thead>
<tr>
<th style="width: 10px;">#</th>
<th>Şehir</th>
<th>Progress</th>
<th style="width: 40px;">Adet</th>
</tr>
</thead>
<tbody>
@{int sirano = 0; }
@foreach (var x in Model)
{
<tr>
<td>@{sirano++;} @sirano</td>
<td>@x.Sehir</td>
<td>
@if (x.Sayi == 1)
{
<div class="progress progress-xs">
<div class="progress-bar progress-bar-danger" style="width: 100%;"></div>
</div>
}
@if (x.Sayi == 2)
{
<div class="progress progress-xs">
<div class="progress-bar bg-warning" style="width: 100%;"></div>
</div>
}
</td>
<td>
@if (x.Sayi == 1)
{
<span class="badge bg-danger">@x.Sayi</span>
}
@if (x.Sayi == 2)
{
<span class="badge bg-warning">@x.Sayi</span>
}
</td>
</tr>
}
</tbody>
</table>
</div>

Tablomuzu foreach döngüsüne attığımız zaman bize gruplandırmış bir şekilde tablomuzu gösterecektir. Eğer bir şehirden sadece tek cari varsa mavi renk, iki adet varsa turuncu renk olmasını sağladık. Ekran görüntüsü ise aşağıdaki gibidir.

Etiketler: