如何解决如何使用C#在foreach循环中获取每个项目的底层元素?
我不确定如何确切地问这个问题,但这就是问题所在:
我得到一个按SubTypeId(Key = 1或Key = 2)过滤的列表,如下所示:
如您所见,“键= 1”具有4个对象:0、1、2和3。所有这些对象都具有相同的TypeDescription。对于每个循环,如何在其中一次实现此元素“ TypeDescription”?
提前谢谢!:)
解决方法
您在这里有一些选择:
- 通过两个参数将元素数组分组:
var res = Reports.GroupBy(u => new {u.SubTypeId,u.TypeDescription})
.Select(r => new
{
r.Key,// Key here consists of two elements
items = r.Select(i => new
{
i.DocumentPath,i.Id,i.Name,i.SubTypeDescription,i.TypeId
})
}).ToList();
因此,在这种情况下,您将得到SubtypeId
和TypeDescription
项的分组集合,其中包含所需的所有其他元素的集合。
- 创建嵌套分组:
var res2 = Reports.GroupBy(u => u.SubTypeId)
.Select(r => r.ToList()
.GroupBy(r => r.TypeDescription)
.Select(item=> new {
item.Key,items = item.Select(i => new
{
i.DocumentPath,i.TypeId
})
})).ToList();
在这种情况下,您会有更多的嵌套,但是数据输出可能会更接近您最初的请求。
一些建议:
- 请尝试避免在循环主题内进行数组操作,就像在上述情况下一样,您在
foreach
集合输入部分中进行了数组分组。而是在循环之前将数组操作分配给一个单独的变量。 - 尝试使用真实的
class
模型代替匿名对象。
注意:在上述示例中,我只是出于演示目的使用了匿名对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。