3

LINQ to SQLで、SQLのdatetime列の日付部分と.net datetimeオブジェクトのみを比較するにはどうすればよいですか?


5 답변


3

を使ってみてくださいDate両方の性質:

Date today = DateTime.Today; // Effectively DateTime.Now.Date

var dataFromToday = from record in context.Records
                    where record.TimeStamp.Date == today
                    select record;

信じるtvanfossonが言うように、これはLINQ to SQLのために働きます、それはEFのためにありません。


  • それがうまくいかないことを私は知っています。それは昨日私をかみました。 - tvanfosson
  • @ tvanfosson:正式にもっと強調しました:) - Jon Skeet
  • 私が通常ユニットテストのためにデータコンテキストを模擬していて、それがLINQを使ってオブジェクトを処理するのは明らかなので、本当に苦痛です。私が覚えておかなければならないのは、リポジトリを開発するときにユニットテストがそのようなことについてうそをつくことができるということです。 - tvanfosson

1

Linq to SQLは、比較などのためにDateプロパティのSQLへの変換をサポートしています。サポートされているオプションの詳細については、MSDN


0

CLR UDFを作成して日付のみを比較してから、それをあなたのlinq to sql linqクエリで参照することができます。


0

using System.Data.Entity;

DbFunctions.TruncateTime(u.BirthDate) = DbFunctions.TruncateTime(someDate)


0

using System.Data.Objects.SqlClient; //Don't forget this!!

//You can access to SQL DatePart function using something like this:

YourTable.Select(t => new { DayOfWeek = SqlFunctions.DatePart("weekday", t.dateTimeField) - 1 }); //Zero based in SQL

//You can compare to SQL DatePart function using something like this:

DateTime dateToCompare = DateTime.Today;
YourTable.Where(t => SqlFunctions.DatePart("weekday", t.dateTimeField) - 1 == dateToCompare }); //Zero based in SQL

リンクされた質問


関連する質問

最近の質問