LINQ для запроса надежных коллекций Service Fabric?

Есть ли планы по добавлению поддержки LINQ для надежных коллекций в Service Fabric? Кто-нибудь знает какие-либо расширения, которые могут включить это? Кажется, что это было возможно в предыдущей версии API, но не сейчас.


person Apollonas    schedule 29.03.2018    source источник


Ответы (1)


В надежном словаре вы можете использовать CreateEnumerableAsync для создания асинхронного перечисления. (Документация здесь.)

Затем вы можете создавать запросы linq, используя методы расширения Эли здесь.

Пример из сути:

var accounts = await (await accountNames.CreateLinqAsyncEnumerable(txn))
                .Where(x => x.Value.IndexOf(name, StringComparison.InvariantCultureIgnoreCase) >= 0)
                .SelectAsync(async x => new Account
                {
                    Id = x.Key,
                    Name = x.Value,
                    Data = (await accountData.TryGetValueAsync(txn, x.Key)).Value
                })
                .ToList();
person LoekD    schedule 31.03.2018
comment
Какова производительность этого? Происходит ли перечисление только для подмножества данных, заполняющих диапазон, или все извлекается из памяти, а перечисление происходит для всей коллекции? - person Mortana; 30.01.2019
comment
Также хотелось бы узнать ответ на комментарий выше. У меня будут довольно большие коллекции, где мне нужно будет захватить только подмножество записей, если это вытянет всю коллекцию в память, это не пойдет. - person Josh; 09.01.2020
comment
Я считаю, что приведенный выше код в какой-то момент будет иметь каждое значение в памяти, но если значение не спроецировано, оно станет пригодным для выгрузки (снова). Этот код можно оптимизировать с помощью индексов и/или ключевых фильтров. - person LoekD; 10.01.2020