【发布时间】:2010-03-23 15:07:29
【问题描述】:
我有一个 ASP.NET MVC 站点(它使用 Linq To Sql 作为 ORM)和一个客户想要一个针对定制数据库的搜索工具的情况,他们可以选择执行“AND”搜索(所有条件匹配)或“或”搜索(任何条件匹配)。该查询非常复杂且冗长,我想知道是否有一种简单的方法可以做到这两点,而无需创建和维护两个不同版本的查询。
例如,当前的“AND”搜索看起来像这样(但这是一个非常简化的版本):
private IQueryable<SampleListDto> GetSampleSearchQuery(SamplesCriteria criteria)
{
var results = from r in Table where
(r.Id == criteria.SampleId) &&
(r.Status.SampleStatusId == criteria.SampleStatusId) &&
(r.Job.JobNumber.StartsWith(criteria.JobNumber)) &&
(r.Description.Contains(criteria.Description))
select r;
}
我可以复制这个并将 && 替换为 ||运营商获得'OR'版本,但感觉必须有更好的方法来实现这一点。有人对如何以一种易于维护的高效灵活的方式实现这一点有任何建议吗?谢谢。
【问题讨论】:
标签: c# asp.net-mvc linq linq-to-sql