Могу ли я использовать array в выражении LINQ where?

#c# #linq

#c# #linq

Вопрос:

Можно ли использовать что-то вроде .Where(u => u.License_ID == ID) с идентификатором, являющимся массивом?

Ответ №1:

Кодекс

 Where(u => IDs.Contains(u.License_ID))
 

может сработать, но это зависит от вашего поставщика базы данных, поддерживает ли он это. Если это не запрос к базе данных, а LINQ к объектам, это, безусловно, сработает.

Ответ №2:

Если массив содержит пользовательские объекты, вы всегда можете написать метод расширения, например

 Equals(this Array[] _Array)
 

И определите там, каковы требования к равенству.
Тогда ваш код становится:

 .Where(u => u.License_ID.Equals(ID))
 

И это было бы очень полезно для повторного использования =)

Комментарии:

1. Это не сработает, если это запрос, который будет переведен в SQL. И это сбивает с толку именование, что один элемент не равен всему массиву.

2. Это просто пример, чтобы он понял суть, а не производственный код!