C# 对.NET列表中的项目进行筛选和分组<&燃气轮机; List myGroup=lst.GroupBy(t=>new{t.userId,t.userName,t.email,t.reportTypeId}) .选择(g=>新建邮件列表 { 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(myGroup.Distinct()中的var mailingList) { StringBuilder AcrynomsList1=新StringBuilder(); foreach(mailingList.Acrynom中的var项) { 如果(Acrynoms.Length>0) { Acrynoms.追加(“,”); } AcrynomsList1.追加(项目); } }

C# 对.NET列表中的项目进行筛选和分组<&燃气轮机; List myGroup=lst.GroupBy(t=>new{t.userId,t.userName,t.email,t.reportTypeId}) .选择(g=>新建邮件列表 { 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(myGroup.Distinct()中的var mailingList) { StringBuilder AcrynomsList1=新StringBuilder(); foreach(mailingList.Acrynom中的var项) { 如果(Acrynoms.Length>0) { Acrynoms.追加(“,”); } AcrynomsList1.追加(项目); } },c#,ilist,C#,Ilist,我想要实现的是按reportTypeId对myGroup进行筛选和分组。reportTypeId可以是1或2,因此我希望有一个变量StringBuilder AcrynomsList1,其中reportTypeId=1,然后是另一个变量StringBuilder AcrynomsList2,其中reportTypeId=2 我当前的StringBuilder varibale AcrynomsList1具有所有reportTypeId 1和2值 这会给你想要的: List<MailingL

我想要实现的是按reportTypeId对myGroup进行筛选和分组。reportTypeId可以是1或2,因此我希望有一个变量StringBuilder AcrynomsList1,其中reportTypeId=1,然后是另一个变量StringBuilder AcrynomsList2,其中reportTypeId=2


我当前的StringBuilder varibale AcrynomsList1具有所有reportTypeId 1和2值

这会给你想要的:

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

您可以直接将其分组为
字符串
,而无需使用
StringBuilder

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);
类程序
{
静态void Main(字符串[]参数)
{
var list=新列表();
var=list
.GroupBy(m=>m.ReportTypeID)
.选择(g=>new
{
ReportTypeID=g.键,
Items=string.Join(“,”,g.Where(s=>!string.IsNullOrEmpty(s.Acronym))。选择(m=>m.Acronym))
});
}
}
类邮件列表
{
public int ReportTypeID{get;set;}
公共字符串首字母缩略词{get;set;}
}
为您返回
MailingList
的多个可枚举项,其中包含一个
,用于公开您分组所依据的键。
Distinct
GroupBy
的一部分,因此您不需要它

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