在人的查询,这句话应该返回一个数字,有“和”他们最后的名字 -意外的行为包含方法
var results = repository.GetQuery().Where(p => p.Names
.Select(n=> n.LastName)
.Contains("And");
它不返回任何结果的结果。如果我们将其更改为
var results = repository.GetQuery().Where(p => p.Names
.Select(n=> n.LastName)
.Contains("Anderson");
我们得到所有拥有安德森姓氏的人。
显然它正在被转换为SQL而不是Like。此外,我们还修改了它是─
var results = repository.GetQuery().Where(p => p.Names
.Select(n=> n.LastName)
.FirstOrDefault()
.Contains("And");
返回所有谁拥有的人“和”随时随地有姓氏,可惜它只检查的人的第一个姓氏。
var results = repository.GetQuery().Where(p => p.Names
.Any(n=> n.LastName
.Contains("And"));
正常工作,但我们不能按照我们想要的方式使用它。
你应该解释你想用什么方式,因为只有最后一个查询是正确的。 – 2011-03-18 22:04:48
您可能希望全文搜索,这是afaik在LINQ to Entities中不受支持,您将不得不使用商店查询推出自己的 – BrokenGlass 2011-03-18 22:17:23
我们正在构建动态查询,并且它们都包含在Where方法中。动态查询由1. Property,2. ComparisonOperator(==,<=,Contains等)组成。3. Value。然后,我们链接多个搜索表达式的语句/方法。所以我们试图让所有的东西都适合Where方法,这样它就可以被正确地解析。 – 2011-03-18 22:23:18