我有一个问题,如果有可能以“更漂亮”的方式设置我的嵌套对象:
foreach (EntityOpportunity opt in entAccount.Opportunities)
{
foreach (EntityActivityPointer activity in opt.Activities)
{
condRegardingObjectId.Values.Add(activity.Id);
}
}
每个商机实体都有一个活动列表,我只需要Id。
祝你好运
答案 0 :(得分:5)
当然,请使用SelectMany
:
var IDs = entAccount.Opportunities
.SelectMany(opt => opt.Activities, (opt, act) => act.Id);
由于你没有指定condRegardingObjectId
是什么,我猜是要知道如何整体导入值集合(类似AddRange
)?
答案 1 :(得分:3)
你拥有的东西没有错。当然,像SelectMany
/ Select
这样的东西可以把它放到更少的行上,但这会产生开销(委托创建,而不能使用自定义迭代器) - foreach
可以使用自定义迭代器,并且所有IL都在一个地方。)
var list = condRegardingObjectId.Values;
foreach(EntityOpportunity opt in entAccount.Opportunities) {
foreach(EntityActivityPointer activity in opt.Activities) {
list.Add(activity.Id);
}
}
答案 2 :(得分:1)
如果您只想要活动的ID,您可以使用Linq:
var activityIds = entAccount.Opportunities.SelectMany(p=>p.Activities).Select(p=>p.Id);
答案 3 :(得分:0)
用于List T对象:
entAccount.Opportunities.ForEach(opt => opt.Activities.ForEach(activitiy => condRegardingObjectId.Values.Add(activity.Id)));
答案 4 :(得分:0)
只是猜测你的物体:
foreach (EntityActivityPointer activity in entAccount.Opportunities.SelectMany(opt => opt.Activities))
{
condRegardingObjectId.Values.Add(activity.Id);
}