Linq İle Pivot
31 Ocak Pazartesi, 2011 | Linq /*Yorumlar (1)*/
Pivot hazırlamak benim için hep eziyet olmuştur (Sql ile). Lakin Linq ile çok daha basitmiş onu kavradım :)
Şöyleki;
Diagramda görüldüğü gibi bir yapı olsun. Yazılar ve Kategoriler adlı iki adet ana tablo ve bunları bağlayan bir adet yardımcı tablo.

Amacımız;
Kategori bazında 2010 yılında aylık kaç adet yazı yayınlanmış onu bulmak ve listelemek.
from p in db.EntryCategories
where p.Entry.EntryTime.Year == 2010
group p by p.Category.CategoryName into g
select new
{
Kategori = g.Key,
Ocak = g.Where(t => t.Entry.EntryTime.Month == 1).Count(),
Şubat = g.Where(t => t.Entry.EntryTime.Month == 2).Count(),
Mart = g.Where(t => t.Entry.EntryTime.Month == 3).Count(),
Nisan = g.Where(t => t.Entry.EntryTime.Month == 4).Count(),
Mayıs = g.Where(t => t.Entry.EntryTime.Month == 5).Count(),
Haziran = g.Where(t => t.Entry.EntryTime.Month == 6).Count(),
Temmuz = g.Where(t => t.Entry.EntryTime.Month == 7).Count(),
Ağustos = g.Where(t => t.Entry.EntryTime.Month == 8).Count(),
Eylül = g.Where(t => t.Entry.EntryTime.Month == 9).Count(),
Ekim = g.Where(t => t.Entry.EntryTime.Month == 10).Count(),
Kasım = g.Where(t => t.Entry.EntryTime.Month == 11).Count(),
Aralık = g.Where(t => t.Entry.EntryTime.Month == 12).Count(),
};
Sonuç;
