1

ProgramID の配列があり、ProgramId の数に応じて、多数の Select ステートメントを動的に作成したいと考えています。

例えば:

  var surveyProgramVar = surveyProgramRepository.Find().Where(x => x.ProgramId == resultsviewmodel.ProgramIds.FirstOrDefault());

これは、単一の ProgramId.FirstOrDefault() で動作する select ステートメントの例です。SurveyProgramVars のリスト/配列を作成し、配列内の各 ProgramIds を選択するにはどうすればよいですか?

4

2 に答える 2

0

必ずしも最適であるとは限りませんが、次のことを試してみてください。

var surveyProgramVar = surveyProgramRepository.Find()
                       .Where(x => resultsviewmodel.ProgramIds.Contains(x.ProgramId));
于 2012-10-17T19:31:37.547 に答える
0

次のようなものを試すことができます:

var surveyProgramVar = surveyProgramRepository.Find().Where(x => resultsviewmodel.ProgramIds.Contains(x.ProgramId));

ヒント:メソッドがデータベースにヒットする場合は、クエリFind()のステートメントに対して特定のメソッドを作成すると便利です。INこれを行わないと、テーブルのすべてのレコードが取得され、メモリ内でフィルター処理されます (linq to objects)。これは機能しますが、あまり良くありません。コードは次のようになります。

var surveyProgramVar = surveyProgramRepository.FindByProgramsId(resultsviewmodel.ProgramIds);
于 2012-10-17T19:32:07.103 に答える