объединить два списка одного типа в c# - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть два списка с таким же типом, как показано ниже:

public class ParentTutorCountModel
{
    /// <summary>
    /// Gets or sets Location
    /// </summary>
    public string Location { get; set; }

    /// <summary>
    /// Gets or sets Location
    /// </summary>
    public int ParentCount { get; set; }

    /// <summary>
    /// Gets or sets Location
    /// </summary>
    public int TutorCount { get; set; }
}

У меня есть два метода, чтобы вернуть количество родителей и репетиторов по местоположению, значит местоположение является общим в обоих, я получаю результат как ниже:

ParentCountResult

Location       TutorCount      ParentCount
Loc1               0                1
Loca2              0                5
Loca3              0                3

И TutorCountResult

Location       TutorCount      ParentCount
Loc1               4                0
Loca2              2                0
Loc4               2                0

Что я пытаюсь сделать get is:

   Location       TutorCount      ParentCount
    Loc1               4                1
    Loca2              2                5
    Loca3              0                3
    Loc4               2                0

Я пробовал Union, присоединяюсь, но не получаю желаемого результата. пожалуйста, помогите мне.

Ответы [ 2 ]

3 голосов
/ 11 февраля 2020

Спасибо @Rob, вот что сработало для меня

var result = parentCount.Concat(tutorCount).GroupBy(r => r.Location).Select(r => new 
{  
   Location = r.Key, 
   TutorCount = r.Sum(rr => rr.TutorCount), 
   ParentCount = r.Sum(rr => rr.ParentCount) 
});

Сначала объедините два списка, сгруппированные по сумме.

0 голосов
/ 11 февраля 2020

Я делаю это с помощью объединения и получаю тот же вывод.

 var resultq1 = from a in parentCount.Union(tutorCount)
                           group a by a.Location into temp

                           select new
                           {
                               Location = temp.Key,
                               TutorCount = temp.Sum(rr => Convert.ToInt32(rr.TutorCount)),
                               ParentCount = temp.Sum(rr => Convert.ToInt32(rr.ParentCount)),
                           };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...