У меня есть следующая проблема:Как получить отдельные значения из вложенных списков объектов?
foo f = new foo();
// ...
f.bars.SelectMany(m => m.qux.GroupBy(x => x.hash))
.Select(group => group.First())
.Sum(s => s.size);
Это возвращает сумму общего size
имущества для qux
в случае в одного бара. Добавление другого объекта qux
с существующим значением hash
в другом bar
игнорируется, поэтому его значение size
подсчитывается в вычисленной сумме. (Даже тот же qux
существует в другом bar
объект).
Как я могу настроить свой запрос, чтобы убедиться, что все объекты, имеющие одинаковые hash
, вычисляются один раз?
Структура данных будет выглядеть следующим образом:
class foo
{
public List<bar> bars = new List<bar>();
}
class bar
{
public List<qux> qux = new List<qux>();
}
class qux
{
public string hash { get; set; }
public int size { get; set; }
}
Просьба предоставить информацию о структуре данных, с которыми вы работаете. –
@DmytroShevchenko, foo имеет много баров (список), и бары имеют много qux (список ). Qux имеет два свойства (размер и хэш). –
user1027620
'foo.SelectMany()' не имеет смысла, поскольку 'foo' не является коллекцией. –