9

DateTime.ToLocalTimeLinq to EF ではサポートされていません。

代替手段は何ですか?アイデアが不足しています。

4

7 に答える 7

8

Linqクエリ内で.ToLocalTime()を使用する代わりに、パラメーターに対してクエリ外で反対の変換を使用します。

var dateUniversal = dateParam.ToUniversalTime();

var query = myTable.Where( t => t.DateTime > dateUniversal );
于 2012-05-03T12:20:51.620 に答える
0

拡張機能を組み合わせて使用​​し、アプリのフロントエンドから渡された値が LocalTime になるようにしました。したがって、レポートの開始日パラメーターと終了日パラメーターのように、2 つの日付時刻がある場合は、それらをそこに配置します..ユーザーが LocalTime で送信できるようにします..次に、コントローラーのバックエンド部分に.. Linq to Entities クエリで sdate 変数と edate 変数を使用します。静的ヘルパー クラスにスローした静的拡張メソッド。1年以上遅れてすみません。: )

    DateTime sdate = CalcHelper.AbsoluteStart(model.StartDate);
    DateTime edate = CalcHelper.AbsoluteEnd(model.EndDate);

    public static DateTime AbsoluteStart(this DateTime dateTime)
    {
        return dateTime.Date.ToUniversalTime();
    }
    public static DateTime AbsoluteEnd(this DateTime dateTime)
    {
        return AbsoluteStart(dateTime).AddDays(1).AddTicks(-1).ToUniversalTime();
    }
于 2013-09-04T16:41:39.307 に答える
0

原則として、日付と時刻を UTC でデータベースに保存する必要があります。

データベースに保存する前に、コード内でローカルの日付/時刻を UTC に変換します。

同様に、データベースで UTC から現地時間を表示する必要がある場合は、データベースのフェッチ後にコードで変換します。

于 2012-05-03T12:27:32.830 に答える
0

次のように試すことができます:

var promotions = _promotionService.GetAll(
            x => (DbFunctions.TruncateTime(x.CreatedDate.Value) >= viewModel.GTXFromDate.Date)
            && (DbFunctions.TruncateTime(x.CreatedDate.Value) <= viewModel.GTXToDate.Date));
于 2015-07-10T04:34:09.243 に答える
0

サーバーからタイムゾーン オフセットを取得すると、EntityFunctions を使用して linq クエリにオフセットを適用できる場合があります。

var offset = TimeZoneInfo.Local.BaseUtcOffset.TotalMinutes;
var result = db.Dates.Where(a => 
             EntityFunctions.DiffDays(EntityFunctions.AddMinutes(a.Date, offset), DateTime.Now) == 0);
于 2015-07-06T19:57:43.027 に答える
-1

比較のために DateTime を String に変換します。次に例を示します。

const string DATE_FORMAT = "yyyy/MM/dd";
var query = sampleTable.Where(x => x.DateTime.ToString(DATE_FORMAT) > DateTime.Now.ToString(DATE_FORMAT));
于 2015-07-07T08:25:52.490 に答える
-2

この質問の解決策を見つけました

public partial class Person { 

  partial void OnLoaded() { 
    this._BirthDate = DateTime.SpecifyKind(this._BirthDate, DateTimeKind.Utc); 
  } 
} 
于 2012-05-03T11:55:07.057 に答える