【问题标题】:Selecting several objects based on array of IDs根据 ID 数组选择多个对象
【发布时间】:2012-10-17 19:29:01
【问题描述】:
我有一个 ProgramID 数组,并希望根据 ProgramId 的数量动态创建多个 Select 语句。
例如:
var surveyProgramVar = surveyProgramRepository.Find().Where(x => x.ProgramId == resultsviewmodel.ProgramIds.FirstOrDefault());
这是一个使用单个 ProgramId.FirstOrDefault() 的 select 语句示例。如何创建一个 SurveyProgramVars 列表/数组并为数组中的每个 ProgramId 选择?
【问题讨论】:
标签:
c#
asp.net-mvc
asp.net-mvc-3
linq
entity
【解决方案1】:
不一定是最佳的,但您可以尝试:
var surveyProgramVar = surveyProgramRepository.Find()
.Where(x => resultsviewmodel.ProgramIds.Contains(x.ProgramId));
【解决方案2】:
你可以试试这样的:
var surveyProgramVar = surveyProgramRepository.Find().Where(x => resultsviewmodel.ProgramIds.Contains(x.ProgramId));
提示:如果Find() 方法对数据库产生了影响,那么如果您为查询中的IN 语句创建一个特定方法会很好。如果您不这样做,它将获取表上的所有记录并将其过滤到内存中(linq to objects),这可行但不是很好。您的代码可能类似于:
var surveyProgramVar = surveyProgramRepository.FindByProgramsId(resultsviewmodel.ProgramIds);