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.

Diagram

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ç;
Table

Yorumlar

Adem DÖNMEZ

Bu konuyu biraz daha detaylı anlatırmısınız konu ile yakından ilgileniyorum şimdiden teşekkür ederim.

 

7 Nisan Cumartesi, 2012

Yorum Yaz

Ad

Email (sahte adresli yorumlar silinir.)

Yorum