2011-04-13 12 views
3

ここで私は限り、このように持って選択します!私はこれを正しくしているか誰にでも教えてもらえますか?LINQのは日付が昨日

+0

は、接合時またはちょうど日付で保存されているもの 'Join_date'分野はありますか? –

+0

@Lasse、彼らも時間がありますが、linq文でそれを取り除く方法はわかりません –

+0

時間を取って比較するために 'c.Join_date.Date'を実行できますか、それとも何か不足していますか? – R0MANARMY

答えて

8

AddDaysは、時間/分/秒のコンポーネントを保持します。あなたは(c.Join_dateは日付のみのコンポーネントである場合)を使用する必要があり、次のいずれか

DateTime yesterday = DateTime.Today.AddDays(-1).Date; 

そうでない場合は、あなたが範囲のための比較:

DateTime yesterday = DateTime.Today.AddDays(-1).Date; 
DateTime yesterdayEnd = DateTime.Today.Date.AddSeconds(-1); 
db.tblForumAuthors.Where(c => c.Join_date >= yesterday && c.Join_date < yesterdayEnd) 
+0

誰かが真夜中前に半分に参加したらどうなりますか?あなたは秒を引く必要はありません。 –

+0

ありがとう、運がない、DBのフィールドには時間がありますが、私はそれが動作を停止していると思いますか? –

+1

データベースが日付コンポーネントのみを保存する場合は、両方のオブジェクトで時/分/秒が0になります。これはtrueと評価されます。 – Femaref

3

あなたは時間を取り除く必要はありません、あなたは正確に一致しないようにしてください。

代わりにこれを試してみてください:

DateTime today = DateTime.Today; // read once, avoid "odd" errors once in a blue moon 
DateTime yesterday = today.AddDays(-1); 
YesterdaysRegistrations = db.tblForumAuthors.Where(
    c => c.Join_date >= yesterday 
     && c.Join_date < today).Count();