【发布时间】:2021-09-22 16:39:24
【问题描述】:
我正在尝试重新创建以下 SQL 条件:like '1 %'。
表中的列包含由空格分隔的两组值。使用StartsWith(glassTag) 返回列以“1”开头的任何行。在测试条件之前,它似乎对字符串进行了修剪。但是,如果我使用StartsWith("1 "),它会返回我期望的行。
我做错了什么?
这是一个 LINQ to Entity 问题。 SqlMethods 不兼容。
以下返回名称为:“119 GL-01”
var glassTag = "1 ";
var gItem = await _context.Items.Where(x => x.Name.StartsWith(glassTag) && x.Material.MaterialType.Name.Equals("Glass") && x.JobItems.Any(j => j.Job.Code.Equals(pCode))).ToListAsync();
下面的代码返回我期望的结果
var gItem = await _context.Items.Where(x => x.Name.StartsWith("1 ") && x.Material.MaterialType.Name.Equals("Glass") && x.JobItems.Any(j => j.Job.Code.Equals(pCode))).ToListAsync();
【问题讨论】:
-
请使用标签而不是文字来说明您使用的是什么(还要考虑正确的版本)。
-
EF Core 版本,使用的提供程序?一切都很重要,因为这件事是特定于提供者的,并且您可能在提供者中发现了错误。
-
尝试设置 var glassTag = @"1";
-
@Den - 得到了相同的结果。