cagin
cagin

Reputation: 5920

Linq to Sql problem

I have a problem with linq to sql query. If someone will help me, I will pray :)

Here is my sql query:

SELECT Y.kullaniciAdi   
    ,COUNT(A.adim_id) AS EklenenAdimlar
  FROM [Adimlar] AS A   
   INNER JOIN Yazilimcilar AS Y ON Y.yazilimci_id = A.refYazilimci_id
   INNER JOIN Durumlar AS D ON D.durum_id = A.refDurum_id
   INNER JOIN AdimCalismalari AS AC ON AC.refAdim_id = A.adim_id
  WHERE MONTH(eklenmeTarihi) BETWEEN 3 AND 3
    AND DAY(eklenmeTarihi) BETWEEN 22 AND 29
    AND YEAR(eklenmeTarihi) BETWEEN 2011 AND 2011
    AND AC.refDurum_id IN (2,5)
  GROUP BY A.refYazilimci_id,Y.kullaniciAdi

Here is my linq to sql query:

var AdimCalismalari =
    from Adm in db.Adimlars.AsEnumerable()
     join Yzl in db.Yazilimcilars on Adm.refYazilimci_id equals Yzl.yazilimci_id
     join Drm in db.Durumlars on Adm.refDurum_id equals Drm.durum_id
     join AdmC in db.AdimCalismalaris on Adm.adim_id equals AdmC.refAdim_id
     where
         Adm.eklenmeTarihi.Value >= DateTime.Parse(dexIlkTarih.Text) &&
         Adm.eklenmeTarihi.Value <= DateTime.Parse(dexSonTarih.Text)
         && (AdmC.refDurum_id == 2 || AdmC.refDurum_id == 5)
     group Adm by new { yazilimci = Yzl.kullaniciAdi, AdimSayi = Adm.adim_id }
         into AdimToplam
         select new
                    {
                        yazilimci = AdimToplam.Key.yazilimci,
                        AdimSayi = AdimToplam.Key.AdimSayi
                    };

My linq query return null result however my sql query return 3 rows. Do you have any idea about my problem?

KR,

Çağın

Upvotes: 2

Views: 243

Answers (2)

cagin
cagin

Reputation: 5920

Silly me,

I delete .AsEnumerable() from Adimlars and it resolved. Thank you for suggestions.

KR,

Çağın

Upvotes: 1

Daniel Hilgarth
Daniel Hilgarth

Reputation: 174289

I see one potential problem:
When dexIlkTarih.Text is 2011-03-22, dexSonTarih.Text is 2011-03-29 and Adm.eklenmeTarihi.Value is 2011-03-29 01:00, i.e. it has the same date as your upper bound but also a time, it will not be returned, because:

2011-03-29 = 2011-03-29 00:00 < 2011-03-29 01:00

This is a definite difference between your SQL and your LINQ query.

Upvotes: 3

Related Questions