Разделить список на несколько списков по критериям С#

82
9

У меня есть Список, состоящий из следующих объектов

List<Person> PersonList

Класс Person

class Person
{
public int PersonId{get;set;}
public string PersonName{get;set;
public int Age {get;set;}
}

У меня есть другой Список, который содержит список возражений, который мне интересен, например, 12, 14, 16, 24 и т.д.

List<int> AgeList

Я хочу сравнить Age of PersonList с возрастом, найденным в AgeList и IF, и хранить его в отдельных списках, основанных на каждой группе. Например, люди, относящиеся к возрасту 12, должны находиться в другом списке, в возрасте 14 лет в другом списке и т.д.

спросил(а) 2017-04-11T08:35:00+03:00 3 года, 6 месяцев назад
1
Решение
57

Это быстрый код для вас, без LINQ. Сначала вы создаете новый список типа Person, затем перебираете свой список Person, а для каждого человека вы проверяете, совпадает ли возраст, аналогичный вашему возрасту.

List<Person> finalList=new List<Person>();
foreach (var a in PersonList)
{
foreach (var b in AgeList)
{
if (a.Age==b)
{
finalList.Add(a);
break;
}
}
}

ответил(а) 2017-04-11T08:39:00+03:00 3 года, 6 месяцев назад
59

Решение LINQ:


List<Person> personAgeList = PersonList.Where(p => AgeList.Contains(p.Age)).ToList();

ответил(а) 2017-04-11T08:41:00+03:00 3 года, 6 месяцев назад
59

List<Person> data = new List<Person>();
List<int> ages = new List<int>();
List<Person> result = data.Where(p => ages.Contains(p.Age)).ToList();

ответил(а) 2017-04-11T08:39:00+03:00 3 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема