我正在使用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开头的所有客户?
答案 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));