The code snippet below search allow the user to match a string against three fields in the table. If any of the fields match, the entry is included in the result. However, u
Try this:- http://www.albahari.com/nutshell/predicatebuilder.aspx
Not exactly pretty, but it would work.
var foundUsers = entities.UserInfo.Where(u =>
(searchCompleteName && u.CompleteName.Contains(searchString))
|| (searchPortalID && u.PortalID.Contains(searchString))
|| (searchUsername && u.UserIdentity.Contains(searchString));
You could also do this with a union. The union operator returns distinct results so there will not be any duplicates. I have no idea if EF can defer this to the database.
var foundUsers = Enumerable.Empty<UserInfo>().AsQueryable();
if (searchCompleteName)
{
foundUsers = foundUsers.Union(entities.UserInfo.Where(u => u.CompleteName.Contains(searchString)));
}
if (searchPortalID)
{
foundUsers = foundUsers.Union(entities.UserInfo.Where(u => u.PortalID.Contains(searchString)));
}
if (searchUsername)
{
foundUsers = foundUsers.Union(entities.UserInfo.Where(u => u.PortalID.Contains(searchString)));
}