簡體   English   中英

使用左連接結果進行LINQ分組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM