2

データベースに 2 つのフィールド FromDate と ToDate があります。動的な値を持つ 2 つの日付の月差があるレコードの結果の LINQ クエリが必要です。

実際には、フィールド NameOfCompany が nvarchar(50)、ProfileID が bigint、EmploymentFrom が datetime、EmploymentUpto が datetime、IsCurrentEmployer が bit である EmploymentHistory として 1 つのデータベース テーブルがあります。

ProfileID は Profile の参照キーです。月ごとの経験によってすべてのプロファイルのクエリを生成したいです。

IsCurrentEmployer が true の場合、EmploymentUpto は null です。

4

4 に答える 4

12

.NET 4+ を使用している場合は、次のようEntityFunctions.DiffMonthsなユーティリティ メソッドを試すことができます。

var query = query
            .Where(i=> 
                 EntityFunctions.DiffMonths(i.FromDate, i.ToDate) == 2
            );
于 2012-08-10T12:43:59.153 に答える
2

エンティティフレームワークを使用していると仮定します。

Query(q => q.ToDate < DateTime.Today && q.FromDate > DateTime.Today.AddMonths(-2))

クエリは任意のIqueryableです。最初に、firstOrDefaultを選択できます。もちろん、DateTime.Todayを自分のパラメータに変更できます。

于 2012-08-10T12:45:51.290 に答える
0

このコードを実行できます

var resultWithMonth = datevalue2.Subtract(datevalue2).Days / (365.25 / 12)
于 2012-08-10T12:39:03.687 に答える
0

dbから日付を引き出​​すと、減算関数を選択引数として使用してzip操作を実行できます。

IEnumerable<DateTime> datesA = //blah;
IEnumerable<DateTime> datesB = //blah;
IEnumerable<DateTime> differences = 
  datesA.Zip( datesB, (dA,dB) => dA.Subtract(dB));
于 2012-08-10T12:40:00.823 に答える