Как получить конкретное значение из синтаксиса инициализатора коллекции - PullRequest
0 голосов
/ 20 марта 2019
List<Student> studentList = new List<Student>() {
                new Student() { Id = 1, Name = "John"},
                new Student() { Id = 2, Name = "Steve"},
                new Student() { Id = 3, Name = "Bill"},
                new Student() { Id = 3, Name = "Bill"},
                new Student() { Id = 4, Name = "Ram" },
                new Student() { Id = 5, Name = "Ron" }
            };

Я использую синтаксис Collection Initializer. Я знаю способ напечатать все значение имени с помощью foreach. Но как получить определенное значение (например, «Стив»)?

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Существует множество способов найти элемент в List. Обычным способом является использование LINQ, как показано ниже

Найти всех студентов, чье имя Steve. Это возвращает IEnumerable<Student>, который может быть использован для дальнейшей обработки или распечатан путем зацикливания, или может быть преобразован в массив или список с использованием ToArray() или ToList() расширений IEnumerable

var allSteves = studentList.Where(s => s.Name == "Steve");

Если вы уверены, что существует только один Steve, то вы можете использовать FirstOrDefault() метод расширения

var steve = studentList.FirstOrDefault(s => s.Name == "Steve");

Это либо возвратит нулевую запись (при условии, что Student является классом), либо запись Student с Steve в качестве имени. Вы можете использовать метод First(), если хотите, чтобы LINQ выдавал исключение, когда запись Student с Name = Steve не найдена.

Существует также List.Find, который может помочь, но методы LINQ применяются ко всем IEnuerable, включая массивы и списки

Само собой разумеется, вы можете реализовать более сложную логику для ваших критериев соответствия в методах Where, First, Find и т. Д.

1 голос
/ 20 марта 2019

Вы можете использовать индексатор для доступа к элементу в списке по его индексу, например:

string nameOfTheSecondItem = studentList[1].Name;

studentList[1] возвращает второй элемент в studentList, поскольку индексы начинаются с нуля.

Также обратите внимание, что при попытке получить доступ к элементу в несуществующем индексе выдается ArgumentOutOfRangeException, поэтому перед использованием вышеуказанного кода следует проверить, является ли studentList.Count > 1, если вы не уверены, что список всегдасодержит как минимум два элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...