类(class)老板有代表他/她下属员工名单的子类(class)集合人。
My Requirement is to get the list of persons
List<Person> Membersfrom the objectJohnusing LINQ Statement.
public class Person
{
public string Name { get; set; }
public string Department { get; set; }
public string Gender { get; set; }
}
public class Boss
{
public string Name { get; set; }
public string Department { get; set; }
public string Gender { get; set; }
public List<Person> Employees { get; set; }
}
Boss John = new Boss()
{
Name = "Harry",
Department = "Development",
Gender = "Male",
Employees = new List<Person>()
{
new Person() {Name = "Peter", Department = "Development",Gender = "Male"},
new Person() {Name = "Emma Watson", Department = "Development",Gender = "Female"},
}
}
我需要的集合应该是
List<Person> Members = new List<Person>()
{
new Person() {Name = "Harry", Department = "Development",Gender = "Male"},
new Person() {Name = "Peter", Department = "Development",Gender = "Male"},
new Person() {Name = "Emma Watson", Department = "Development",Gender = "Female"},
}
如何从对象中获取列表成员John 使用 LINQ 语句。请帮助我。
也请为提供解决方案Distinct List<Person> Members 来自 List<Boss> 使用 LINQ 语句。
请您参考如下方法:
你可以简单地这样做:
var list = John.Employees.ToList();
list.Insert(0,
new Person
{
Name = John.Name,
Department = John.Department,
Gender = John.Gender
});
如果你有一个 List<Boss> ,那么你可以这样做:
var result = list
.SelectMany(x =>
new [] { new Person { Name = x.Name, Department = x.Department, Gender = x.Gender, EmpID = x.EmpID }}
.Concat(x.Employees))
.GroupBy(x => x.EmpID) //Group by employee ID
.Select(g => g.First()) //And select a single instance for each unique employee
.ToList();
