I need to call identical LINQ queries multiple times that only have differing elements in the “where” clause. Instead of repeating the LINQ query over and over again, I’d like to pass the elements into a single query instead, but I’m brain stuttering on how to do that.
Right now my base LINQ query looks like this:
return from a in _repository.GetApps()
join set in _repository.GetSettings() on a.id equals set.application_id
join type in _repository.GetSettingsTypes() on set.setting_type_id equals type.id
join ent in _repository.GetEntities() on a.entity_id equals ent.id
where ent.ROW_ID == app && set.application_id == id && (set.setting_type_id==81 || set.setting_type_id==82 || set.setting_type_id==83)
orderby set.application_id, type.ordinal
select new Settings { app_name = a.name, data_type = type.data_type, setting_name = type.name, setting_description = type.description, setting_value = set.setting_value, entity_name = ent.name, entity_num = ent.ROW_ID };
The “where” clause just lists setting types by IDs. The other calls will simply replace that “where” clause with more or fewer setting ids which then get returned to a view. How can I dynamically replace that “where” clause or the setting ids? Can I simply assign a string or array to the setting list following the second “&&” (this didn’t seem to work)? Or would Lambdas help here (I also couldn’t get that to work)? Thanks!
You can use an array combined with a
Contains()query: