gpt4 book ai didi

c# - LINQ 分组依据与左连接结果

转载 作者:行者123 更新时间:2023-11-30 17:36:45 34 4
gpt4 key购买 nike

如果我得到这个列表

个人电话

------------------------------------------------------------
| **PersonId** |**Name** | **PhoneId** | **PhoneNumber** |
------------------------------------------------------------
| 1 | John Doe | 1 | 111-55-5855 |
------------------------------------------------------------
| 1 | John Doe | 2 | 111-55-5521 |
------------------------------------------------------------
| 2 | Mary Jane| 3 | 254-565-855 |
------------------------------------------------------------
| 3 | J. Watson| NULL| NULL|
------------------------------------------------------------

我需要映射到这个对象:

public class PersonContactInfo {
public int Id { get; set; }
public string Name { get; set; }
public List<string> Phones { get; set; }
}

使用 LINQ,我怎样才能为每个人获取一行,他的手机在列表和分页中?

我已经有一个查询,其结果类似于PersonPhone 结果集,但我不知道如何按PersonId 分组,然后将所有PhoneNumbers 加入List,以及分页。例如,如果我想要三页大小,如果实际查询返回 4 行,如何进行 sql 查询以获取 John Doe、Mary Jane 和 J. Watson 的手机?

注意:我没有(也不能)使用 Entity Framework,我正在做的是填充 PersonPhone 列表的 sql 查询,就像 EF 一样。

最佳答案

应用分组依据:

var query=    PersonPhoneSet
.GroupBy(p=>new {p.PersonId, p.Name})
.Select(g=> new PersonContactInfo
{
Id=g.Key.PersonId,
Name=g.Key.Name,
Phones= g.Select(p=>p.PhoneNumber).ToList()
}
);

关于c# - LINQ 分组依据与左连接结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39042871/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com