好吧,这种行为让我很困惑。我有一个 IQueryable 列表,我正在尝试添加 Where 子句来检查字符串字段是否包含子字符串。当我像这样对搜索字符串进行硬编码时:
sourceList = sourceList.Where(license => license.FileNumber.Contains("S0"))
它按预期工作,并通过在 Visual Studio 调试器中检查 sourceList 生成内部查询:
{SELECT [Extent1].[id] AS [id], [Extent1].[FileNumber] AS [FileNumber],
[Extent1].[LegalLocation] AS [LegalLocation]FROM [dbo].[Licenses]
AS [Extent1]WHERE [Extent1].[FileNumber] LIKE N'%S0%'}
当我从以下变量设置搜索值时,会发生奇怪的事情:
string testString = "S0";
sourceList = sourceList.Where(license => license.FileNumber.Contains(testString))
这会生成内部查询:
{SELECT [Extent1].[id] AS [id], [Extent1].[FileNumber] AS [FileNumber],
[Extent1].[LegalLocation] AS [LegalLocation]FROM [dbo].[Licenses]
AS [Extent1]WHERE [Extent1].[FileNumber] LIKE @p__linq__0 ESCAPE N'~'}
注意到最后 LIKE 部分的不同了吗?我真的很困惑。任何帮助将不胜感激。希望这真的很愚蠢。如果它有任何相关性,这是用于过滤来自实体框架源的数据。
谢谢,杰森