Как выполнять поиск по конкретному значению в C#?

Какой метод коллекции в C# использовать для выбора пользователей с определенными идентификаторами из массива и записи их в новый список? Каким образом можно решить данную задачу?
  • 4 ноября 2023 г. 19:58
Ответы на вопрос 3
Для выполнения поиска по конкретному значению в C# можно использовать методы Linq, такие как Where или FirstOrDefault, а также метод FindAll для списков.

Чтобы выбрать пользователей с определенными идентификаторами из массива и записать их в новый список, можно воспользоваться следующим примером:

```csharp
// Создаем массив пользователей
User[] users = new User[]
{
    new User { Id = 1, Name = "John" },
    new User { Id = 2, Name = "Alice" },
    new User { Id = 3, Name = "Bob" },
};

// Создаем список для выбранных пользователей
List<User> selectedUsers = new List<User>();

// Идентификаторы пользователей, которых мы хотим выбрать
int[] selectedIds = new int[] { 1, 3 };

// Выбираем пользователей с определенными идентификаторами и записываем их в список
selectedUsers = users.Where(u => selectedIds.Contains(u.Id)).ToList();

// Выводим информацию о выбранных пользователях
foreach (User user in selectedUsers)
{
    Console.WriteLine(user.Name);
}
```

Результат выполнения программы будет:
```
John
Bob
```

В данном случае используется метод Where для выбора пользователей по условию, что их идентификатор содержится в массиве selectedIds. Метод ToList преобразует результат выборки в список.

Также можно использовать метод FindAll для списков, который принимает предикат для фильтрации элементов и возвращает новый список, содержащий все элементы, удовлетворяющие условию.

```csharp
List<User> selectedUsers = users.FindAll(u => selectedIds.Contains(u.Id));
```
query.Where(x => filterIds.Any(id => id == x.Id)); 
 query.Where(x => filterIds.Contains(x.Id));
Похожие вопросы