【发布时间】:2009-05-03 11:36:13
【问题描述】:
我有多个 linq 查询,用于根据每个查询的单个特定条件搜索信息数据库。例如按 ID 或按姓名等。
目前,用户只能使用一种查询方法进行搜索。问题是我希望用户能够使用多个条件进行搜索,而不必编写新的查询来组合来自多个查询的条件。
例如:
下面我有一个查询,它根据存储在其下的部门名称返回一组问题,另一个查询根据存储问题的模块标题返回一组问题。 由于目前用户只能按部门名称或模块标题搜索 - 例如计算机科学或分布式系统,我想更改它,以便用户可以指定如下内容:
返回所有属于 DepartmentName == 计算机科学 && 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;
}
【问题讨论】:
-
我很确定 DataContext 有一个 Dispose 方法,并保持实时数据库连接。让您的垃圾收集器管理您的数据库连接通常是个坏主意,就像您在这里所做的那样。
标签: c# linq linq-to-sql