C# - LINQ по коллекции
Постигаю азы LINQ. Помогите пожалуйста с заданием:
"Создайте коллекцию объектов класса Person. Используемые поля – имя, год рождения, должность, оклад, компания (Company). Класс Company содержит название компании и год основания. Получите новую коллекцию, согласно варианту:
- Список компаний, в которых более одного сотрудника. Содержит название компании и к-во сотрудников."
Есть такой код, но по сути я лишь добилась вывода самих компаний без числа работников.
1 - как добавить в вывод кол-во работников в этих компаниях?
2 - может можно все это дело описать короче?
Company company1 = new Company("Рога и копыта", 2003);
Company company2 = new Company("Сам себе мастер", 1980);
Company company3 = new Company("Реки любви (курсовые и дипломные)", 2010);
Company company4 = new Company("Меланхолия", 1999);
Company company5 = new Company("Компания Икс", 2000);
var list = new List<Person>
{
new Person("Максим", 1997, "администратор", 800, company1),
new Person("Виталий", 1990, "менеджер", 500, company1),
new Person("Валентина", 1985, "директор", 1200, company2),
new Person("Елизавета", 2002, "менеджер", 500, company2),
new Person("Семен", 1986, "администратор", 800, company1),
new Person("Лариса", 1995, "администратор", 850, company3),
new Person("Виолетта", 1985, "менеджер", 550, company2),
new Person("Павел", 2000, "директор", 500, company1),
new Person("Николай", 2001, "администратор", 750, company4),
new Person("Илья", 1982, "директор", 1100, company4)
};
var select2 = from Person al in list
where (from Person al1 in list where al1.company == company1 select al1).Count() > 1 && al.company == company1 ||
(from Person al2 in list where al2.company == company2 select al2).Count() > 1 && al.company == company2 ||
(from Person al3 in list where al3.company == company3 select al3).Count() > 1 && al.company == company3 ||
(from Person al4 in list where al4.company == company4 select al4).Count() > 1 && al.company == company4 ||
(from Person al5 in list where al5.company == company5 select al5).Count() > 1 && al.company == company5
select al.company.name;
foreach (var j in select2.Distinct())
{
Console.WriteLine("-------------------------------------------");
Console.WriteLine(j);
}
Ответы (1 шт):
Совет EvgeniyZ работает, но только для фреймворков 7.1 и выше. Для .Net Framework 4.6.1 выдается ошибка трансляции "Predefined type 'System.ValueTuple`2' is not defined".
Извините, что пишу комментарий в ответах, репутации для комментария не хватает.