c# - 如何使用c#获取foreach循环中每个项目的底层元素?
问题描述
我不确定如何准确地问这个问题,但这是问题所在:
我得到了一个按 SubTypeId(Key = 1 或 Key = 2)过滤的列表,如下所示:
如您所见,“Key = 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.Id,
i.Name,
i.SubTypeDescription,
i.TypeId
})
})).ToList();
在这种情况下,您将有更多的嵌套,但数据输出可能更接近您最初请求的内容。
几点建议:
- 请尽量避免循环主题内的数组操作,就像在上面的情况下,您在
foreach
集合输入部分进行了数组分组。相反,在循环之前将数组操作分配给单独的变量。 class
尝试使用真实模型,而不是匿名对象。
注意:在上面的例子中,我使用 Anonymous 对象只是为了演示目的。
推荐阅读
- sql - Bigquery 和 Pushshift:分区表不支持时间范围装饰器
- postgresql - 如何在 PostgreSQL 中操作数以千计的多列?
- html - HTML Mail Outlook - 修复表格宽度,使其在不同屏幕上查看时不会损坏
- swift - 接收者 (
我有两个视图控制器 - ScheduleService 和 CalendarDay。通过单击并从 ScheduleService 拖动到 CalendarDay,我创建了从 ScheduleService 到 CalendarDay 的手动转场。然后我非常小心地将
- reactjs - 使用 REST API 数据设置变量
- python - 为什么当对象在矩阵中时python处理方法不起作用?
- ios - utf-8 字符串的 strcasecmp() 无法正常工作(MacOSX、iOS)
- c# - 具有条件外键的实体框架模型构建器
- c# - 实体框架核心放置操作不起作用
- sql - 迭代数据以标记具有 N 连续小时的 ID