如何从嵌套的对象列表中获取不同的值?

时间:2015-09-27 12:40:31

标签: c# linq

我有以下问题:

foo f = new foo();
// ...
f.bars.SelectMany(m => m.qux.GroupBy(x => x.hash))
      .Select(group => group.First())
      .Sum(s => s.size);

这会返回单栏实例size的{​​{1}}总属性的总和。在另一个qux中添加具有现有qux值的另一个hash对象将被忽略,因此其bar值将计入计算总和中。 (即使在另一个size对象中存在相同的qux)。

如何调整查询以确保所有具有相同bar的对象都计算一次?

数据结构如下所示:

hash

1 个答案:

答案 0 :(得分:0)

从您的数据结构来看,这就是您所需要的:

UpdatePanel

与您的初始解决方案的不同之处在于,我们首先获得包含int sizeSum = bars.SelectMany(m => m.qux) .GroupBy(q => q.hash) .Select(g => g.First()) .Sum(q => q.size); 的统一列表,然后 我们将其按.SelectMany()分组。