根据ID数组选择多个对象

时间:2012-10-17 19:29:01

标签: c# asp.net-mvc asp.net-mvc-3 linq entity

我有一个ProgramID数组,想根据有多少ProgramId动态创建一些Select语句。

例如:

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

这是使用单个ProgramId.FirstOrDefault()的select语句的示例。如何创建SurveyProgramVars的列表/数组并为数组中的每个ProgramIds选择?

2 个答案:

答案 0 :(得分:0)

它不一定是最佳的,但您可以尝试:

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

答案 1 :(得分:0)

您可以尝试以下方式:

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

提示:如果Find()方法对数据库进行了命中,那么如果您创建一个特定方法来查询查询的IN语句,那就太好了。如果你不这样做,它将占用一个表上的所有记录并在内存中过滤它(linq到对象),这可以工作,但不是很好。您的代码可能类似于:

var surveyProgramVar = surveyProgramRepository.FindByProgramsId(resultsviewmodel.ProgramIds);