如何使用c#获取foreach循环中每个项的基线元素?

如何使用c#获取foreach循环中每个项的基线元素?,c#,.net,list,foreach,iterator,C#,.net,List,Foreach,Iterator,我不知道如何确切地问这个问题,但问题是: 我得到了一个列表,我按子类型ID(Key=1或Key=2)进行筛选,如下所示: 正如你所看到的,“Key=1”有4个对象:0、1、2和3。所有这些对象都具有相同的TypeDescription。如何在该for each循环中实现此元素“TypeDescription”一次 提前感谢!:) 这里有几个选项: 按两个参数对元素数组进行分组: var res=Reports.GroupBy(u=>new{u.SubTypeId,u.TypeDescripti

我不知道如何确切地问这个问题,但问题是:

我得到了一个列表,我按子类型ID(Key=1或Key=2)进行筛选,如下所示:

正如你所看到的,“Key=1”有4个对象:0、1、2和3。所有这些对象都具有相同的TypeDescription。如何在该for each循环中实现此元素“TypeDescription”一次


提前感谢!:)

这里有几个选项:

  • 按两个参数对元素数组进行分组:
  • var res=Reports.GroupBy(u=>new{u.SubTypeId,u.TypeDescription})
    .选择(r=>new
    {
    r、 Key,//这里的Key由两个元素组成
    items=r.Select(i=>new
    {
    i、 文档路径,
    i、 身份证,
    i、 名字,
    i、 描述,,
    i、 类型ID
    })
    }).ToList();
    
    因此,在本例中,您将有一组
    subsubfid
    TypeDescription
    项,其中包含所需的所有其他元素的集合

  • 创建嵌套分组:
  • var res2=Reports.GroupBy(u=>u.subscriptid)
    .Select(r=>r.ToList()
    .GroupBy(r=>r.TypeDescription)
    .选择(项目=>新建){
    项目.关键,
    项目=项目。选择(i=>new
    {
    i、 文档路径,
    i、 身份证,
    i、 名字,
    i、 描述,,
    i、 类型ID
    })
    })).ToList();
    
    在本例中,您将有更多的嵌套,但数据输出可能会更接近您最初请求的内容


    一些建议:

  • 请尽量避免循环主题内的数组操作,就像在上面的例子中一样,您在
    foreach
    collections输入部分中进行了数组分组。相反,在循环之前,将数组操作指定给单独的变量
  • 尝试使用真实的
    模型,而不是匿名对象。
    注意:在上面的例子中,我使用匿名对象只是为了演示

  • 嗯<代码>项目是一个集合。您需要为集合编制索引。第一个对象是索引0,下一个对象是1,等等。
    GroupBy
    的结果本身是可枚举的(包含组中的所有项)。这样你就可以绕过去了
    foreach(项中的var子项){…}
    。使用
    .ToArray()
    将其转换为索引的collectionitem.FirstOrDefault().TypeDescription