7

officeStartTime日時値を保持する日時変数があります

officeStartTime = {9/24/2013 10:00:00 AM}

、およびその他のプロパティCHECKINOUTを含むモジュールがあります。useridchecktime

今私が欲しいのはCHECKINOUT、 checktime の時間部分が の時間部分よりも大きいエントリのリストを取得することですofficeStartTime

私は試します:

var checklist= con.CHECKINOUTs.Where(x => x.CHECKTIME.TimeOfDay > officeStartTime.TimeOfDay);

checklist次のエラーが表示されます。

{"The specified type member 'TimeOfDay' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."}.

TimeOfDayLINQ to Entities ではサポートされていないと書かれています。これを行う他の方法はありますか?何をすべきか教えてください。

ありがとうございました。

4

3 に答える 3

11

使用する

CreateTime(hour, minute, second)

日付と時刻の正規関数から

于 2013-09-30T11:28:51.590 に答える
9

EntityFunctions.CreateTimeメソッドを使用します。

var checklist= from c in con.CHECKINOUTs
               let time = EntityFunctions.CreateTime(c.CHECKTIME.Hour,
                                                     c.CHECKTIME.Minute,
                                                     c.CHECKTIME.Second)
               where time > officeStartTime.TimeOfDay
               select c;

流暢な構文:

con.CHECKINOUTs.Where(c => EntityFunctions.CreateTime(c.CHECKTIME.Hour, c.CHECKTIME.Minute, c.CHECKTIME.Second) > officeStartTime.TimeOfDay)
于 2013-09-30T11:36:09.993 に答える
5

注意点として、Entity Framework バージョン 6.0.0.0 を使用している場合は、EntityFunctionsOUTDATEDです

同じ機能が にありますDbFunctions

したがって、EF6を使用した答えは次のようになります。

con.CHECKINOUTs.Where(c => DbFunctions.CreateTime(c.CHECKTIME.Hour, c.CHECKTIME.Minute, c.CHECKTIME.Second) > officeStartTime.TimeOfDay)

お役に立てれば!

于 2016-09-02T13:24:52.940 に答える