1

例として、2 つの日付を減算して Timespan の値を取得したい

TimeSpan duration = Convert.ToDateTime(completeDate).Subtract(Convert.ToDateTime(lastRundate));

これは通常の実装用です。Entity FrameworkのエンティティへのLinqでそれを行うにはどうすればよいですか

from job in Jobs
   select new JobEntity
  {                                                  
  Duration =  job.CompleteDate.Value.Subtract(job.NextRunDate.Value)
  };

ここで Jobs はテーブル、CompleteDate と NextRunDate は DataType DateTime の列名ですか? (null値が許可されているため)このコードを試したところ、このエラーが発生しました

LINQ to Entities はメソッド 'System.TimeSpan Subtract(System.DateTime)' メソッドを認識せず、このメソッドはストア式に変換できません。 これについてどうすればよいか教えてください。前もって感謝します

4

2 に答える 2

2

JobEntityモデルを拡張してみませんか?

public DateTime NextRunDate { get; set; }
public DateTime CompletedDate { get; set; }
public Timespan Duration
{
    get
    {
        return CompleteDate.Subtract(NextRunDate)
    }
}
于 2012-09-03T12:21:13.380 に答える
1

EntityFunctionsを使用してみることができます:

from job in Jobs
select new JobEntity
{                                                  
    Duration = EntityFunctions.DiffSeconds(job.CompleteDate, job.NextRunDate)
};

using System.Data.Objects;これにはコードファイルが必要です。期間を秒単位で として返しますint

于 2012-09-03T12:42:41.140 に答える