У меня есть несколько запросов linq для поиска в базе данных информации на основе одного конкретного критерия для каждого запроса. например по ID или по имени и т. д.
В настоящее время пользователь может выполнять поиск, используя только один метод запроса. Проблема в том, что я хочу, чтобы пользователь мог выполнять поиск по нескольким критериям без необходимости писать новые запросы, объединяющие критерии из нескольких запросов.
Например:
Ниже у меня есть запрос, который возвращает набор вопросов на основе названия отдела, под которым они хранятся, и другой запрос, который возвращает набор вопросов на основе названия модуля, под которым хранятся вопросы.
Поскольку в настоящее время пользователь может выполнять поиск только по названию отдела или по названию модуля, например, Компьютерные науки или распределенные системы, я хотел бы изменить это так, чтобы пользователь мог указать что-то вроде:
Вернуть все вопросы, которые имеют
DepartmentName == Computer Science && ModuleTitle == Распределенные системы.
Помощь будет принята с благодарностью.
Вот текущий код:
//Department Name Query
public static IQueryable SearchByDepartmentNameInfo(string deptName)
{
ExamineDataContext dc = new ExamineDataContext();
var queryResult = from q in dc.GetTable<Question>()
where q.Topic.Module.Department.DepartmentName.Equals(deptName)
join s in dc.Solutions
on q.QuestionID equals s.QuestionID
into qs // note grouping
select new
{
Module = q.Topic.ModuleTitle,
Topic = q.TopicName,
Question = q.QuestionText,
QuestionType = q.QuestionType,
};
return queryResult;
}
//Module Title Query
public static IQueryable SearchByModuleTitleInfo(string modTitle)
{
ExamineDataContext dc = new ExamineDataContext();
var queryResult = from q in dc.GetTable<Question>()
where q.Topic.Module.ModuleTitle.Equals(modTitle)
join s in dc.Solutions
on q.QuestionID equals s.QuestionID
into qs // note grouping
select new
{
Module = q.Topic.ModuleTitle,
Topic = q.TopicName,
Question = q.QuestionText,
QuestionType = q.QuestionType,
};
return queryResult;
}