过滤和分组. net列表中的项目

本文关键字:项目 列表 net 过滤 | 更新日期: 2023-09-27 17:50:41

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);
   }
}

我想要实现的是过滤和组myGroup通过reportTypeId。reportTypeId可以是1或2,所以我想有一个变量StringBuilder AcrynomsList1,其中reportTypeId = 1,然后另一个变量StringBuilder AcrynomsList2,其中reportTypeId = 2。

我当前的StringBuilder变量AcrynomsList1具有所有的reportTypeId 1 &2的值。

过滤和分组. net列表中的项目

这应该是你想要的:

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);

您可以直接将其分组为string而不使用StringBuilder:

class Program
{
    static void Main(string[] args)
    {
        var list = new List<MailingList>();
        var grouped = list
            .GroupBy(m => m.ReportTypeID)
            .Select(g => new
            {
                ReportTypeID = g.Key, 
                Items = string.Join(", ", g.Where(s => !string.IsNullOrEmpty(s.Acronym)).Select(m => m.Acronym))
            });
    }
}
class MailingList
{
    public int ReportTypeID { get; set; }
    public string Acronym { get; set; }
}

GroupBy扩展方法为您返回MailingList的枚举数,其中有一个Key来公开您分组的键。DistinctGroupBy的一部分,所以你不需要它