Search code examples
c#ilist

Filtering and grouping items in a .NET List<>


List<MailingList> myGroup = lst.GroupBy(t => new {t.userId, t.userName,t.email,t.reportTypeId})
                             .Select(g => new MailingList
                             {
                               userId = g.Key.userId,
                               Acrynom = g.SelectMany(t => t.Acrynom).ToArray(),
                               userName = g.Key.userName,
                               email = g.Key.email,
                               reportTypeId = g.Key.reportTypeId
                             }).ToList();

foreach (var mailingList in myGroup.Distinct())
{
   StringBuilder AcrynomsList1 = new StringBuilder();
   foreach (var item in mailingList.Acrynom)
   {
      if (Acrynoms.Length > 0)
      {
         Acrynoms.Append(", ");
      }
      AcrynomsList1.Append(item);
   }
}

What i want to achieve is filter and group myGroup by reportTypeId. reportTypeId can either be 1 or 2, so i want to have a variable StringBuilder AcrynomsList1 where reportTypeId = 1 and then another variable StringBuilder AcrynomsList2 where reportTypeId = 2.

My current StringBuilder varibale AcrynomsList1 has all reportTypeId 1 & 2 values.


Solution

  • This should give you what you want:

    var list =  lst.GroupBy(x => x.reportTypeId)
                .Select(x => new 
                         { 
                             reportTypeId = x.Key, 
                             Acronyms = x.SelectMany(t => t.Acrynom).ToArray()
                         }).ToList();
    
    var acronymList1 = string.Join(", ", list[0].Acronyms);
    var acronymList2 = string.Join(", ", list[1].Acronyms);