Я предлагаю вам прочитать о лямбда-выражениях , это то, что вы ищете.
mFilteredStorage.AddRange(mStorages.Where(storage => inventories.Any(inventory => inventory.productId == storage.productId)).ToList());
Это вернет вам список с вашими отфильтрованными условиями.Итак, сразу после Where
вы перебираете каждый элемент в вашем списке, я назвал этот элемент storage
.(вы можете назвать их как хотите) Затем мы перебираем ваш объект inventories
с помощью другого лямбда-выражения.Это, второе лямбда-выражение, возвращает либо true, если любой из inventories
productIds совпадает с productId текущего итерирующего объекта mStorages
, либо false, если они не совпадают.
Так что вы однаждыСоответствие productIds позволяет представить код, подобный следующему:
mStorages.Where(storage => true);
И как только результат второго лямбда-выражения станет истинным, storage
будет добавлен к IEnumerable
, который вы получите в результатеWhere
метод.
Поскольку мы получаем IEnumerable
в качестве возврата, но мы хотим добавить эти Storage
объекты в mFilteredStorage
, я преобразую IEnumerable
в список, с помощью:
/*(the return object we get from the `Where` method)*/.ToList();