2017-03-10 5 views
0

へのLINQでのDateTimeの間で減算を実行する方法私は、LINQクエリをしました:どのようにSQLのSELECT()メソッド

var NextWeekDate = DateTime.Now.AddDays(7); 

var BirthData = db.EmployeeMasterAs 
.Where(x => x.Emp_BirthDate >= CurrentDate) 
.Select(x => new { x.Emp_BirthDate, 
    DaysRemaining = (NextWeekDate - x.Emp_BirthDate).Value.TotalDays 
}) 
.OrderBy(x => x.Emp_BirthDate) 
.ToList(); 

Select()方法、DaysRemaining = (NextWeekDate - x.Emp_BirthDate).Value.TotalDaysの要素、私は違いを取得したいです日の日付とは、DaysRemainingにそれを保存し、このクエリが動作していないし、それがスローする例外:

DbArithmeticExpression引数が数値共通の型を持っている必要があります。

これを達成する方法がわかりません。

答えて

0

うん、だからここにそれがどのようになるで、それを手に入れました。 EntityFrameworkはコードをSQLに変換できません。

db.EmployeeMasterAs 
.Where(x => x.Emp_BirthDate >= CurrentDate) 
.Select(x => new { x.Emp_BirthDate, 
DaysRemaining = DbFunctions.DiffDays(x.Emp_BirthDate,NextWeek) 
}) 
.OrderBy(x => x.Emp_BirthDate) 
.ToList(); 

さらにDbFunctions機能メソッドは標準的な機能と呼ばれているその代わりに、あなたはDbFunctions.DiffDays(startExpression, endExpression)メソッドを使用することができます。これらは一連の関数であり、すべてのEntity Frameworkプロバイダーでサポートされています。これらの正規関数は、プロバイダの対応するデータソース機能に変換されます。標準言語以外の機能にアクセスするには、クエリを移植性の高いものにするために、標準関数が優先されます。

1

LinqToSqlはDateTime.Subtractをサポートしていないと思います。ただし、既存の関数SqlMethods.DateDiffDay(https://msdn.microsoft.com/en-us/library/bb468730(v=vs.110).aspx)を使用することができます

編集: SqlMethodsはSQL Server専用です。 DbFunctionsは、データベースの種類に関係なく選択するヘルパークラスです。日付と算術演算を実行する

を、タイムズは、EFではサポートされていません。

関連する問題