Linq填充同一对象内的字段

时间:2020-02-28 16:27:17

标签: c# linq

class Person
{
        public int Number { get; set; }
        public string Name { get; set; }
        public IList<string> PersonCourseNames { get;set;}
}

class PersonCourse
{
        public int Id { get; set; }
        public string Name { get; set; }
        public int PersonId {get;set; }  //reference key from Person
}

拥有IEnumerable人//其中空的PersonCourseNames 和 IEnumerable作为PersonCourses列表

如何获得类似的结果, 为匹配的PersonCourse填充PersonCourseName的人员列表。 //需要填充现有的对等项列表

var combined = from p in Persons join c in PersonCourses on p.Id equals c.PersonId
select new {}  //here getting problem how to pouplate with list of course names

// notes:在IEnumerable以上转换为ToList()。

1 个答案:

答案 0 :(得分:1)

//assuming you have those two
IEnumerable<Person> persons;
IEnumerable<PersonCourse> personCourses;

var personCoursesGroupedByPerson = personCourses.ToLookUp(x => x.PersonId, x => x.Name);
foreach (var person in persons)
     person.PersonCourseNames = personCoursesGroupedByPerson[person.Number].ToList();

此解决方案还假设PersonCourse.PersonId = Person.Number

在这里您可以看到一个示例: https://dotnetfiddle.net/kW5Mep

相关问题