如何使用LINQ从数据库中选择多个项目

Pit*_*all 1 c# linq list linq-to-sql

所以我从人员表中选择,我需要选择该人所在群组的群组ID.我该怎么做.

到目前为止,我有:

var p = (from p in Context.Person
         join g in Context.Group
         on p.PersonId equals g.PersonId
         select new
         {
             Name = p.Name,
             Age  = p.Age,
             groupIds = ?????
         }
Run Code Online (Sandbox Code Playgroud)

所以在分组表这将是一个主键GroupId,并PersonId因此我需要选择所有的组ID.如何才能做到这一点?

Ser*_*rvy 6

你想要一个GroupJoin而不是一个Join.不同之处在于,它不是将所有相关项目展平为成对列表,而是将所有已连接项目分组为一个序列:

var query = from p in Context.Person
            join g in Context.Group
            on p.PersonId equals g.PersonId into groups
            select new
            {
                Name = p.Name,
                Age  = p.Age,
                groupIds = groups.Select(g => g.GroupId),
            };
Run Code Online (Sandbox Code Playgroud)

使用查询语法,将into关键字与a结合使用join将导致a GroupJoin而不是a Join.