2015-09-23 3 views
0

У меня есть массив, как этотПолучите все значения из таблицы, соответствующие значениям в массиве?

string[] Reportable = { "1", "3", "5" }; 

У меня есть таблица продуктов в моей базе данных с колонкой PARTNUMBER и я могу получить все номера изделий с значением 2 например, как это.

var result = db.Products.ToList().Where(product => product.PartNumber == 2); 

Но я хочу получить все значения из базы данных, соответствующие значениям в массиве Reportable. Например, если мой стол выглядеть следующим образом

ID Name PartNumber 
1 Name1 1 
2 Name2 1 
3 Name3 2 
4 Name4 3 
5 Name5 4 
6 Name3 5 

Результат от моего запроса должен быть строк с идентификатором 1,2,4,6, потому что у меня нет номера 2 и 4 в моем массиве.

Редактировать

I'am пытается получить все, что номера изделий начинается с числа в Reportable массиве, а не только точное совпадение. Если у меня есть номер 20 в моем массиве, допустимыми числами из запроса будут, например, 2010, 20221, 20 и 20111, но не, например, 25111, 10333, 11000. Я нашел метод расширения StartsWith(), но я не понимаю его Работа.

ответ

0

Вы можете использовать Contains так:

var result = 
    db.Products.Where(product => 
      Reportable.Any(r => product.PartNumber.StartsWith(r)) 
    ).ToList(); 
+0

Спасибо за ваш ответ! Можно ли изменить, чтобы начать, а не содержать? Например, я хочу, чтобы все PartNumbers начинались с числа в массиве Reportable. Если у меня есть номер 20 в моем массиве, допустимыми числами из запроса будут, например, 2010, 20221 и 20111, но не, например, 25111. Я нашел метод расширения 'StartsWith()', но я не заставляю его работать. – Xtreme

+0

@Xtreme - возможно, вам просто нужно использовать метод 'Any' вместо' Contains'. Я обновил ответ – Aducci

Смежные вопросы