2016-07-26 8 views
-1

この式は正しく構築されていますか?Linqの列挙結果が得られません

var avTimes = db.AvailableTimes.Where(m => m.TimeOfAppointment >= new DateTime(date.Year, date.Month, date.Day, 08, 00, 00) 
               && m.TimeOfAppointment <= new DateTime(date.Year, date.Month, date.Day, 16, 00, 00) 
               && m.StateOfBooking == 1 
               && m.ProviderId == id); 

出力として「linq enumeration no result」が返されます。

+1

dbがデータベースのコンテキストである場合は、データベースに実際に要求を行うためにIQurableクエリがあるようですが、ToList()、ToDictionary()e.t.cを使用する必要があります。メソッド – Vladimir

+4

結果が得られない場合は、提供している述語に一致するエンティティが 'AvailableTimes'に存在しないことを意味します。あなたは実際に、コレクションにそのすべての小切手を渡すエンティティがあることを確認できますか? – Falgantil

+1

avTimesをホバーすると、クエリによって生成されたSQLを取得できます。そうすれば、実際にDBに項目があるかどうかを確認できます。 – smoksnes

答えて

1

結果が得られない列挙は、クエリがパラメータに一致する結果を見つけられなかったことを示すランタイムです。

1)SQLプロファイラをスピンアップしてトレースを開始し、クエリが生成されたことを確認してクエリアナライザでクエリを実行し、クエリをよりよく理解してください。

2)クエリーをパラメータなしに戻し、結果が得られることを確認してから、一度に各パラメータ/リファインメントを追加し、ビヘイビアがどのようにしてよりよく理解できるかを観察します。

-1

この式は正しく構築されていますか?

私は、linqステートメントからDateTime値のインスタンスを移動します。 linq文にメソッドを移動すると、次のような例外が発生する可能性があります。これをSQL文に変換することはできません。

DateTime dtTimeOfAppointmentFrom = new DateTime(date.Year, date.Month, date.Day, 08, 00, 00); 
DateTime dtTimeOfAppointmentTo = new DateTime(date.Year, date.Month, date.Day, 16, 00, 00); 

var avTimes = db.AvailableTimes.Where(m => m.TimeOfAppointment >= dtTimeOfAppointmentFrom 
            && m.TimeOfAppointment <= dtTimeOfAppointmentTo 
            && m.StateOfBooking == 1 
            && m.ProviderId == id); 

LINQ列挙何の結果が得られないだけで行があなたの状態をmeedことがわかっ存在しないことを言います。したがって、SQLブラウザに文を入力して結果を比較することで結果を検証できます。

関連する問題