[英]LINQ Grouping By with Left Join Results
如果我有這個清單
PersonPhone
------------------------------------------------------------
| **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,我如何為每個人獲得一行,他的手機在List和分頁中?
我已經有一個查詢,其結果類似於PersonPhone結果集,但我不知道如何通過PersonId進行分組,然后將所有PhoneNumbers加入List和分頁。 例如,如果我想要一個頁面大小為3,如果實際查詢返回4行,如何使用他們的手機進行SQL查詢以獲取John Doe,Mary Jane和J. Watson?
注意:我不是(也不能)使用Entity Framework,我正在做的是和填充PersonPhone列表的SQL查詢,就像EF一樣。
group by
以下方式應用group by
:
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()
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.