实体框架4.1 Linq包含和StartsWith

时间:2012-01-12 16:12:03

标签: c# .net linq entity-framework linq-to-entities

我正在使用Entity Framework Code First。我想从数据库查询针对List对象的entites。这适用于contains,但是如何将它与StartsWith结合使用?

这是我的代码:

List<string> values = new List<string>();
values.Add("A");
values.Add("B");
context.Customer.Where(c => values.Contains(c.Name)).ToList();

如何查询以A或B开头的所有客户?

3 个答案:

答案 0 :(得分:10)

这应该在内存中工作,但我不确定它是否可以被EF翻译成SQL:

context.Customer.Where(c => values.Any(s => c.Name.StartsWith(s))).ToList();

答案 1 :(得分:2)

你不需要将它与StartsWith结合使用,因为如果它以A或B开头,那么它显然包含A或B.它不能以A或B开头而不包含A或B.

所以只需使用StartsWith而不是Contains。

context.Customer.Where(c => c.StartsWith("A") || c.StartsWith("B")).ToList(); 

答案 2 :(得分:0)

您可以尝试以这种方式组合这两个函数:

IQueryable<Customer> result = (from C in context.Customerwhere C.Name.StartsWith("B") && values.Contains(C.Name));