Sql Linq多重表达式

Sql Linq多重表达式,sql,linq,entity-framework,conditional-statements,Sql,Linq,Entity Framework,Conditional Statements,我使用ASP.NET和EF5。我需要Linq的多重条件。我需要像这样的sql语句 SELECT * FROM Products WHERE (ProdName LIKE '%value1%' AND ProdName LIKE '%value2%' AND ProdName LIKE '%value3%') OR (Keywords LIKE '%value4%') 如何将上述sql转换为linq。我写过这篇文章,但还不够 var prodQuery = from p in _db.

我使用ASP.NET和EF5。我需要Linq的多重条件。我需要像这样的sql语句

SELECT * FROM Products 
WHERE (ProdName LIKE '%value1%' AND  ProdName LIKE '%value2%'  AND  ProdName LIKE '%value3%') 
OR (Keywords LIKE '%value4%')
如何将上述sql转换为linq。我写过这篇文章,但还不够

var prodQuery = from p in _db.Products
    select new SearchResult
    {
        Product = p,
        SearchResultType = SearchResultType.Prod
    };
//this foreach has to be in brackets in sql
foreach (var s in searchText.Split(' '))
{
    var temp = s;
    prodQuery = prodQuery.Where(x => x.Product.ProdName.Contains(temp));
}

//and this foreach has to be in another bracket in sql and it has to connect with or clause
prodQuery = prodQuery.Where(x => x.Product.Keywords.Contains(searchText));
试试这个:

var keywords = searchText.Split(' ');

var results = _db.Products.Where(p => keywords.Any(kw => kw.Contains(p.ProdName)) 
                              || p.Keywords.Contains(searchText))
                 .Select(x => new SearchResult()
                {
                       Product = x,
                       SearchResultType = SearchResultType.Prod
                });

但是containts不会像“%keyword%”@Argicx那样返回记录您的searchText可能包含%?合法吗?是的,首先用逗号分割,所以我必须用%通配符搜索每个关键字。对于此“%keyword%”,请提供一个searchText示例,该问题尚未解决