C# 如果在字符串末尾找到匹配项,则使用.Contains()和.ToLowerInvariant()的EF查询不会产生匹配项
可以单步执行linq查询吗?我有一个linq到实体框架4的查询,其形式最简单:C# 如果在字符串末尾找到匹配项,则使用.Contains()和.ToLowerInvariant()的EF查询不会产生匹配项,c#,linq,entity-framework-4,C#,Linq,Entity Framework 4,可以单步执行linq查询吗?我有一个linq到实体框架4的查询,其形式最简单: List = List.Where(f => f.Value.ToString().ToLowerInvariant().Contains(filter.ToLowerInvariant())); 这是对实体框架DbContext的查询,我很难理解它为什么适用于以下内容: 列表搜索001不会对以下列表产生任何结果 Test001 测试002 测试003 Test004 但是,任何其他搜索都会产生结果(例如t0
List = List.Where(f => f.Value.ToString().ToLowerInvariant().Contains(filter.ToLowerInvariant()));
这是对实体框架DbContext
的查询,我很难理解它为什么适用于以下内容:
列表搜索001
不会对以下列表产生任何结果
t00
或Test
)
更新
基本上,我要寻找的是,当我使用contains时,为什么上面这样的查询不会返回结果,并且值匹配字符串的结尾而不是中间或开头。真让人困惑
好的,它似乎与
ToLowerInvariant()
有关-当我删除该方法时,它工作得很好。尝试使用正如Dani所建议的,LinqPad是一个很好的工具。而且,即使它不允许您“单步执行”Linq查询,您也可以使用LinqPad中提供的名为Dump()的扩展方法,该方法将在查询过程中显示IEnumerable或IQueryable对象的值。它非常有用。此查询是针对数据库(LINQ到EF)还是针对内存中已有的对象(LINQ到对象)运行的。我猜这是基于您在另一个答案上所做的注释的LINQ to objects,在这种情况下,您应该能够在lambda表达式中设置断点 为什么不选择ToLowerInvariant(),查看它返回的内容。似乎是ToLowerInvariant()
产生了错误ToLower()
工作正常 抱歉,大家可能重复,但我已根据回答稍微修改了我的问题,因此许多问题不再有效…您能发布它为我们生成的SQL吗?linqpad如何与EF4 POCO对象一起工作?我只看到linq-to-sql。这是一个通用的解决方案。