Объединить сбор из свойства - PullRequest
0 голосов
/ 14 июля 2020
class oA {
   int type;
   List<oB> list;
}

class oB {
   int id,
   decimal price,
   string name
}

где-то вы получаете список из объектов oA.

Как правильно получить 1 список объектов oB из всех объектов oA определенного типа?

i думал что-то вроде этого

var myoAs = new List<oA>();
/* Load data from wherever */
var myList =  myoAs.Where(x => x.type == 1).select(....)

Кто знает ответ, как получить полный список всех объектов oB (и даже удалить дубликаты в linq, если возможно)

Ответы [ 2 ]

5 голосов
/ 14 июля 2020

Используйте SelectMany для агрегирования нескольких списков и Distinct для фильтрации дубликатов.

var myList =  myoAs.Where(x => x.type == 1).SelectMany(a => a.list).Distinct();
1 голос
/ 14 июля 2020

Вы можете использовать этот метод расширения

IEnumerable independentList = myoAs.SelectMany (x => x.list) .DistinctBy (x => x.name);

public static IEnumerable<TSource> DistinctBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector)
{
    var knownKeys = new HashSet<TKey>();
    return source.Where(element => knownKeys.Add(keySelector(element)));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...