none
Hata: The ntext data type cannot be selected as DISTINCT because it is not comparable. RRS feed

  • Soru

  • Merhabalar,

    Sayfamda raporlama işlemi için bi kolon oluşturdum. Pek fazla veri barındırmayacak ama bir çok ayrı istatistik veri barındıracak. Bu yüzden şöyle bir yapı oluşturdum:

    ID(int)     data(ntext)     reportingType(int)

    reportingType kolonuma göre gösterilmesi gereken alanı filtreliyorum.

    Mesela bugün yapılan işlemler gibi bir alanım var maximum 100 adet veri girişi olacak günlük. Bunları group by ile sayfamda göstermek istiyorum. Ancak başlıktaki hatayı alıyorum. 

    Kullandığım kod ise:

    DatabaseEntity db = new DatabaseEntity();
    var reportProcess = (from r in db.reporting where reportingType == 1 select r).GroupBy(e=>e.data);
    processRep.DataSource = reportingProcess;
    processRep.DataBind();

    22 Ağustos 2012 Çarşamba 06:34

Yanıtlar

  • Problemi biraz kurcalayarak çözdüm :) biraz komik bir çözüm yolu. Belki birisinin bir işine yarar:

    var rpting = (from rp in db.reporting where rp.reportingType == 1 group rp by new {rpt = rp.data.Substring(0, 50)} into g orderby g.Count() descending select new { g.Key, counts = g.Count() });

    • Yanıt Olarak İşaretleyen Halit ÇOLAK 22 Ağustos 2012 Çarşamba 07:51
    22 Ağustos 2012 Çarşamba 07:47

Tüm Yanıtlar

  • data kolonunu 'group by' yapamazsınız ntext tipi nedeniyle.

    group by öncesi CAST(data as nvarchar(max)) işlemi gerekir. (bu her zaman çözüm olmayabilir)

    kolay gelsin

     

    22 Ağustos 2012 Çarşamba 07:37
  • Problemi biraz kurcalayarak çözdüm :) biraz komik bir çözüm yolu. Belki birisinin bir işine yarar:

    var rpting = (from rp in db.reporting where rp.reportingType == 1 group rp by new {rpt = rp.data.Substring(0, 50)} into g orderby g.Count() descending select new { g.Key, counts = g.Count() });

    • Yanıt Olarak İşaretleyen Halit ÇOLAK 22 Ağustos 2012 Çarşamba 07:51
    22 Ağustos 2012 Çarşamba 07:47
  • Söylediğinizi linq ile yapamadım. Yaptığım araştırmalarda zaten ilk bulduğum sonuç cast kullanımıydı ancak bir türlü becerememiştim ama aşağıdaki çözüm tam olarak oldu :) Yardımınız için sağolun.
    • Düzenleyen Halit ÇOLAK 22 Ağustos 2012 Çarşamba 07:51
    22 Ağustos 2012 Çarşamba 07:51