好吧,這種行爲讓我真的難倒了。我有一個IQueryable列表,我試圖添加Where子句來檢查字符串字段是否包含子字符串。當我硬編碼這樣的搜索字符串:添加Linq問題包含字符串的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部分的區別?我很困惑。任何幫助將不勝感激。希望這真的很愚蠢。如果它有任何相關性,這是爲了過濾來自實體框架源的數據。
感謝, 傑森
它在第二種情況 – horgh
是否第二個查詢返回不正確的結果或出現其他不必要的行爲只是通過像參數? – phoog
我不認爲它會返回正確的結果,但實際上是由一個無關的問題引起的。我接受了Brad的解決方案,因爲它是最詳細的。感謝大家! – Jason