搜索下面的代码片段允许用户匹配表中的三个字段的字符串。如果任何字段匹配,则该条目包含在结果中。但是,使用Where筛选结果会导致“字符串必须匹配所有三个字段”,而不是“该字符串可以匹配任何三个字段”。Linq - 动态构建LINQ查询时模拟OrWhere表达式?
动态构建LINQ查询时是否有方法模拟OrWhere表达式?
var foundUsers = from UserInfo user in entities.UserInfo
select user;
if (searchCompleteName)
{
foundUsers = foundUsers.Where(u => u.CompleteName.Contains(searchString));
}
if (searchPortalID)
{
foundUsers = foundUsers.Where(u => u.PortalID.Contains(searchString));
}
if (searchUsername)
{
foundUsers = foundUsers.Where(u => u.UserIdentity.Contains(searchString));
}
PS。我正在使用实体框架和LINQ to Entities,并且正在做一个MVC3 Web应用程序。
参见我的[博客文章(http://blog.abodit.com/2013/02/creating-and-or-expressions-linq/)对于不需要'.AsExpandable替代()'。 – 2013-08-22 20:41:25