Entity Framework 4.1 Linq содержит и запускается с - PullRequest
9 голосов
/ 12 января 2012

Сначала я использую код Entity Framework. Я хочу запросить объекты из базы данных по списку объектов. Это прекрасно работает с содержанием, но как я могу объединить его с 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 ]

10 голосов
/ 05 февраля 2012

Это должно работать в памяти, но я не уверен, может ли оно быть переведено в SQL EF:

context.Customer.Where(c => values.Any(s => c.Name.StartsWith(s))).ToList();
2 голосов
/ 12 января 2012

Вам не нужно комбинировать его со StartsWith, поскольку, если он начинается с A или B, то он, очевидно, содержит A или B. Он не может начинаться с A или B и не содержать A или B.

Так что просто используйте StartsWith вместо Contains.

context.Customer.Where(c => c.StartsWith("A") || c.StartsWith("B")).ToList(); 
0 голосов
/ 01 февраля 2012

Вы можете попробовать объединить две функции следующим образом:

IQueryable<Customer> result = (from C in context.Customerwhere C.Name.StartsWith("B") && values.Contains(C.Name));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...