是否可以进入linq查询?我有一个linq to entity framework 4查询,它是最简单的形式:
List = List.Where(f => f.Value.ToString().ToLowerInvariant().Contains(filter.ToLowerInvariant()));
这是针对实体框架DbContext
的查询,我很难理解为什么它适用于以下内容:
搜索001
的列表不会产生针对以下列表的结果
但是,任何其他搜索都会产生结果(例如t00
或Test
)
基本上我正在寻找为什么当我使用contains时,如上所述的查询不会返回结果,并且该值匹配字符串的结尾vs中间或开头。这真的令人困惑。
好的,它似乎与ToLowerInvariant()
有关 - 当我删除该方法时,它可以正常工作。
答案 0 :(得分:21)
ToLowerInvariant()
似乎产生错误。 ToLower()
工作得很好。
答案 1 :(得分:3)
尝试使用linqpad
答案 2 :(得分:0)
正如Dani所说,LinqPad是一个很好的工具。而且,即使它不允许您“进入”Linq查询,您也可以使用LinqPad中提供的名为Dump()的扩展方法,它将在您查询过程中向您显示IEnumerable或IQueryable对象的值。它非常有用。
答案 3 :(得分:0)
此查询是针对数据库(LINQ to EF)还是针对已存在于内存中的对象(LINQ to objects)运行的。我猜测它是基于你在另一个答案上做出的评论的对象的LINQ,在这种情况下你应该能够在lambda表达式中设置一个断点。
答案 4 :(得分:0)
为什么不对ToLowerInvariant()进行选择以查看它返回的内容。