У меня есть список "StudentList" (есть несколько записей) У меня есть другой список "CourseList" (содержит более одной записи) StudentList (1) - (*) CourseList [Отношения]
Я хочу получить запись с идентификатором курса (столбец из списка курсов) = 1000;
Что я пробовал, но не могу выполнить.
var viewmodel = StudentList.Select(x => x.CourseList.Where(y => y.courseID == "1000"));
Заранее спасибо!
2 ответа
Вот ответ, который вы искали,
var viewmodel = StudentList.SelectMany(x => x.CourseList.Where(y => y.courseID == "1000")).FirstOrDefault();
Поскольку вы проявили интерес к тому, как это работает и что делает selectMany, я немного пояснил, хотя я уже ответил на ваш вопрос в разделе комментариев,
Первое, на что следует обратить внимание, раздел x.CourseList.Where (y => y.courseID == "1000") будет вернуть список курсов с идентификатором 1000. Даже если курс один, он будет список.
Если мы получаем список курсов с идентификатором 1000 для каждого отдельного студента, мы в конечном итоге получить список списка курсов (при использовании выбора).
Итак, здесь selectMany сглаживает 'Список списков курсов' до 'Список курсов' с помощью слияние всех внутренних курсов.
Наконец, FirstOrDefault () обязательно вернет единственный объект курса, идентификатор которого 100, и это необходимый вам результат.
Примечание: хотя я использовал термин List, вы можете иметь дело с IEnumerable
Надеюсь, вы и все, кто приземлится здесь, найдете это полезным.
Вы можете попробовать этот метод
var result = students.Where(x=>isExistCourse(x));
public static bool isExistCourse(Student student)
{
foreach(var item in student.Courses)
{
if(item.Id==1000)
return true;
}
return false;
}
Если вы хотите получить только одну запись, вы можете заменить where
на FirstOrDefault
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.