Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果在字符串末尾找到匹配项,则使用.Contains()和.ToLowerInvariant()的EF查询不会产生匹配项_C#_Linq_Entity Framework 4 - Fatal编程技术网

C# 如果在字符串末尾找到匹配项,则使用.Contains()和.ToLowerInvariant()的EF查询不会产生匹配项

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

可以单步执行linq查询吗?我有一个linq到实体框架4的查询,其形式最简单:

List = List.Where(f => f.Value.ToString().ToLowerInvariant().Contains(filter.ToLowerInvariant()));
这是对实体框架
DbContext
的查询,我很难理解它为什么适用于以下内容:

列表搜索
001
不会对以下列表产生任何结果

  • Test001
  • 测试002
  • 测试003
  • Test004
  • 但是,任何其他搜索都会产生结果(例如
    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。这是一个通用的解决方案。