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

时间:2013-07-03 14:24:03

标签: 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 = ?????
         }

因此,在组表中,它将是GroupIdPersonId的主键,因此我需要选择所有组ID。怎么办呢?

2 个答案:

答案 0 :(得分: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),
            };

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

答案 1 :(得分:2)

我在SO的编辑器上编码。如果我理解正确你想要人的团体。 否则请纠正我。

 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
     };