2016-05-26 3 views
4

からEntity Frameworkの中に日時と時間を追加します。は、私は完璧に働いている、まだ</p> <pre><code>select * FROM [Events] where EndDate+cast(EndTo as datetime)>GETDATE() </code></pre> <p>を終了していないすべてのイベントを取得したい別の列

これは私が

var list = dbContext.Events 
        .Where(e => e.EndDate + e.EndTo > DateTime.Now) 
        .ToList(); 

を使用してみましたし、私は

DbArithmeticExpression引数が数値共通の型を持っている必要がありますエラーを取得しています(EndTo: 11:00:00.0000000, END DATE: 2016-05-26

で私の値です。

このクエリはどのようにしてEntity Frameworkに書き込むことができますか?

答えて

1

DateTimeTimeSpanを追加しようとしているためです。これは許可されていません。

var list= dbContext.Events 
      .Where(e=>e.EndDate.AddSeconds(e.EndTo.TotalSeconds) > DateTime.Now) 
      .ToList(); 

するか、これはエンティティへのLINQの場合:これを行うには、代わりにDateTime.AddSeconds(TimeSpan.TotalSeconds)のようなものを使用しよう

var list= dbContext.Events 
      .Where(e=>EntityFunctions.AddSeconds(e.EndDate, e.EndTo.TotalSeconds) > DateTime.Now) 
      .ToList(); 

編集:あなたのe.EndTo以来

はその後、Nullable<TimeSpan>ですValue

var list= dbContext.Events 
      .Where(e=>e.EndDate.AddSeconds(e.EndTo.Value.TotalSeconds) > DateTime.Now) 
      .ToList(); 

それとも

var list= dbContext.Events 
      .Where(e=>EntityFunctions.AddSeconds(e.EndDate, e.EndTo.Value.TotalSeconds) > DateTime.Now) 
      .ToList(); 
+0

エラー:「可能System.Nullableは<のSystem.TimeSpan>」「TotalSeconds」の定義なし拡張メソッド「TotalSeconds」タイプの最初の引数を受け取る「可能System.Nullable <システムが含まれていません.TimeSpan> 'が見つかりました(使用しているディレクティブまたはアセンブリ参照がありませんか?) –

+0

両方で同じエラーが発生しています –

+0

@ M.Nabeelああ、あなたの 'e.EndTo'は' Nullable'です'TimeSpan'、その場合は、代わりに' e.EndTo.Value.TotalSeconds'を使用してみてください – Ian

関連する問題

 関連する問題