2016-04-17 16 views
0

私は新しいASP.NET Webforms開発者です。 Entity FrameworkとRepository Patternの使い方を今学んでいます。私が今苦労しているのは、TRequestテーブルから各リクエストの承認ステータスを取得する方法です。私のデータベーススキーマは次のとおりです。このリクエストのリストを各リクエストのステータスで取得するにはどうすればよいですか?

TRequest: Id, Title, Reason 
TApproval: Id, RequestId, StatusId 
TStatus: Id, Title 

私がしたいのは、各リクエストのステータスを含むリクエストのリストを取得することです。私のリポジトリのパターンでは

、私は次のコードを持っている:私は第二の方法GetRequestByStatusでエラーを取得していますなぜ

public IEnumerable<TRequest> GetRequest() 
{ 
    return context.TRequest.ToList(); 
} 

public IEnumerable<TRequest> GetRequestByStatus(int statusId) 
{ 
    return GetRequests().Where(r => r.TApproval.TStatus.Id).ToList(); //I got an error here 
} 

を?私はr.TApproval.TStatus.Idと言うことができません。理由はわかりません。

答えて

0

なぜ2番目のメソッドGetRequestByStatusにエラーが発生していますか?私はr.TApproval.TStatus.Idと言うことができず、理由はわかりません。

Whereメソッドでは述語が必要で、そこに述語を渡すことはありません。より正式には、MSDNに記載されています。

句は、データソースからの要素が照会 式で返される 指定するクエリ式で使用されるザ。 これは(範囲変数によって参照される)各ソース 要素にブール条件(述語)を適用し、 指定された条件が真されたものを返します。 1つのクエリ式に複数のwhere句と1つの句に複数の 述語サブ式が含まれている可能性があります( )。

+0

おかげで行を変更する必要があります。私はこれを知っているが、私が実際にはわからないのは、上記の私の問題を解決する方法です。 –

+0

@TechLoverよろしくお願いいたします。だからここには奇妙なことがある。私が見ることができるように、 'TRequest'は' TApproval'への参照がありません。あなたが望むとは思えないと言われているのは、 'TRequest'テーブルを照会することによって実現可能です。それは奇妙な考えです。一方、私はあなたが 'TApproval'テーブルを照会し、結果に対応する' TRequest'を含めることによって、あなたが望むものを得ることができると仮定できます。私はこの 'context.TApproval.Inlcude(appr => appr.TRequest)'のようなものがあなたの場合に役立つかもしれないと思います。 – Christos

0

あなたは、ステータスIDでフィルタしようとしている場合は、あなたが私を助けしようとしているため

return GetRequests().Where(r => r.TApproval.TStatus.Id == statusId).ToList(); 
+0

ご協力いただきありがとうございます。問題は 'TStatus'を追加できないことです。このコード行の下でエラーが発生しています。理由はわかりません。 –

関連する問題