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

本文关键字:选择 项目 数据库 何使用 LINQ | 更新日期: 2023-09-27 18:20:48

所以我从人员表中进行选择,我需要选择该人员所在组的组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 = ?????
         }

所以在组表中,它将是GroupIdPersonId的主键,所以我需要选择所有的组ID。如何做到这一点?

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

您想要的是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),
            };

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

我在SO的编辑器上进行了编码。如果我理解正确的话,你想要Person的群组。否则请纠正我。

 var p = from p in Context.Person         
     select new
     {
         Name = p.Name,
         Age  = p.Age,
         groups = from g in Context.Group
                  where p.PersonId == g.PersonId
                  select g.GroupId
     };