是否有可能重构以下查询所以i.Title.Contains(query) || i.Description.Contains(query)
只有一次,而留在单一的查询(没有子查询)在生成的SQL?实体框架链接在哪里条款
if (extendedSearch)
{
result = result.Where(i => i.Title.Contains(query) || i.Description.Contains(query)
|| (i.CreatedBy.FirstName + " " + i.CreatedBy.LastName).Contains(query)
|| (i.AssignedTo.FirstName + " " + i.AssignedTo.LastName).Contains(query)
);
}
else
result = result.Where(i => i.Title.Contains(query) || i.Description.Contains(query));
哦,是的,这是完全有效的,但我希望解决方案不涉及创建一个巨大的'where'子句。像'query.Where(x => x.Foo && x.Bar)''时可以写成类似于'query.Where(x => x.Foo).Where(x => x.Bar)''。这个例子很简单,但有了更多的参数,它很难维护:( –
@Lukáš:我知道了。你知道PredicateBuilder吗?也许它可以帮助你达到目的:http://www.albahari.com/nutshell/ predicatebuilder.aspx – Slauma
不,这正是我需要的,谢谢! –