Linq sorgusunda Datetime alan zaman olmadan nasıl sorgulanır?

alattin (17127) 6 yıl önce sordu

Linq, Lambda query'de türü Datetime olan bir alan var. Form üzerinden sadece tarih geliyor. Veriler veritabanında 2018-12-18 17:55:22.647 formatında. Benin şu şekilde bir kodum var:

from v1 in db.Haber where v1.Tarih == t1 

Burada t1 Datetime picker kontrolünden geliyor ve sadece 18.12.2018 gibi sadece tarihi barındırıyor. Ben bu şekilde sorgulama yaptığımda doğal olarak hiç bir sonuç dönmüyor.

Veritabanında türü Datetime olan alanda sadece tarih sorgulamasını linq ile nasıl yaparım?

Toplam 1 cevap


alattin (17127) 6 yıl önce cevapladı

Linq sorgusunda sadece tarih alanını sorgulamak istiyorsanız DbFunctions.TruncateTime fonksiyonundan yararlanabilirsiniz. DbFunctions.TruncateTime size Datetime olan bir alandan sadece Date döndürür.  DbFunctions.TruncateTime fonksinonu kullanabilmek için kodunuzun başına şı direktif satırını eklemelisiniz:

using System.Data.Entity;

Daha sonra sorgunuzu şu şekilde yazabilirsiniz:

from v1 in db.Haber where  DbFunctions.TruncateTime(v1.Tarih) == t1 

Bu şekilde artık sadece sadece tarih alanı üzerinden sorgulama yapabilirsiniz.