如何使用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 = ?????
}
所以在组表中,它将是GroupId
和PersonId
的主键,所以我需要选择所有的组ID。如何做到这一点?
您想要的是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
};