Sql Linq多重表达式
我使用ASP.NET和EF5。我需要Linq的多重条件。我需要像这样的sql语句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.
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示例,该问题尚未解决