你可以试试这个:
customers.where(c=>EF.Functions.Like(c.Name,"%john%");
我进行了一个测试,看到了生成的SQL语句,以下是结果。
sql = _context.ProdutoPortfolio.Take(10).Where(c => c.NomeProduto.Contains(c.NomeProduto))
sql2 = _context.ProdutoPortfolio.Take(10).Where(c => EF.Functions.Like(c.NomeProduto, $"%{search}%")
结果sql1:如果你使用contains,这就是结果。
DECLARE @__p_0 int = 10;
DECLARE @__search_1 varchar(350) = 'a';
SELECT [t].[ProductID], [t].[Cod], [t].[ProductName], [t].[SubThemeName], [t].[ThemeName]
FROM (
SELECT TOP(@__p_0) [p].[ProductID], [p].[Cod], [p].[ProductName], [p].[SubThemeName], [p].[ThemeName]
FROM [ProductPortfolio] AS [p]
) AS [t]
WHERE (@__search_1 LIKE '') OR (CHARINDEX(@__search_1, [t].[productName]) > 0)
结果 sql2:
DECLARE @__p_0 int = 10;
DECLARE @__Format_2 varchar(350) = '%a%';
SELECT [t].[ProductID], [t].[Cod], [t].[ProductName], [t].[SubThemeName], [t].[ThemeName]
FROM (
SELECT TOP(@__p_0) [p].[ProductID], [p].[Cod], [p].[ProductName], [p].[SubThemeName], [p].[ThemeName]
FROM [ProductPortfolio] AS [p]
) AS [t]
WHERE [t].[productname] LIKE @__Format_2
SQL2满足了我的需求,SQL2胜出。