2013-03-29 18 views
8

LINQ to SQLを使用して今日入力されたレコードを取得します。私は以下のコードを書いたが、以前の日付レコードも返す。今日の日付レコードを取得するためのLINQ to SQLクエリの作成方法?

DateTime todaysDate = DateTime.Now; 
DateTime yesterdaysDate = DateTime.Now.AddDays(-1); 

var result = (from a in cxt.visitor.OrderByDescending(n => n.singin) 
       where (a.singin > yesterdaysDate && a.singin <= todaysDate) 
       select new {a.visitorid, a.visitorname, a.visitingperson, a.phonenumber, a.reasonforvisit, a.signature, a.singin }); 

LINQ to SQLを使用して今日入力されたレコードを取得する方法を教えていただけますか?

答えて

29

ようDateTime.Now使用DateTime.TodayのInsetad:

DateTime startDateTime = DateTime.Today; //Today at 00:00:00 
DateTime endDateTime = DateTime.Today.AddDays(1).AddTicks(-1); //Today at 23:59:59 

var result = (from a in cxt.visitor.OrderByDescending(n => n.singin) 
      where (a.singin >= startDateTime && a.singin <= endDateTime) 
      select new {a.visitorid, a.visitorname, a.visitingperson, a.phonenumber, a.reasonforvisit, a.signature, a.singin }); 

またはあなたは、次の簡単なバージョン、(私はSQLに変換するかどうかわからない)

var result = (from a in cxt.visitor.OrderByDescending(n => n.singin) 
      where (a.singin.Date == DateTime.Today) 
      select new {a.visitorid, a.visitorname, a.visitingperson, a.phonenumber, a.reasonforvisit, a.signature, a.singin }); 
+3

Is'ntを試すことができます'DateTime.Today.AddDays(1).AddTicks(-1)'と '<= endDateTime'はちょっと複雑すぎますか? 'DateTime.Today.AddDays(1)'と '

+0

私は間違いなく '<= endDateTime'を意味しました。私は、 '.AddTicks(-1)'を使うことによって、 '<='比較が必要なことを意味しています。それは本当に問題ではない、あなたの答えはまだ正しいです。 :) –

+0

ありがとう、それは非常に便利です – CRK

関連する問題