IAsyncEnumerable to list এ রূপান্তর করুন


18

সুতরাং সি # 8 এ আমরা IAsyncEnumerableইন্টারফেসের সংযোজন পেয়েছি ।

আমাদের যদি একটি সাধারণ থাকে তবে IEnumerableআমরা Listএটির বাইরে যে কোনও সংগ্রহ সংগ্রহ করতে চাই। লিনককে ধন্যবাদ সেখানে।

var range = Enumerable.Range(0, 100);
var list = range.ToList();

অবশ্য, এখন আমি আমার রূপান্তর করতে চান IAsyncEnumerableএকটি থেকে Listএবং অবশ্যই অ্যাসিঙ্ক্রোনাস এই। ইতিমধ্যে সেই মামলার জন্য লিনক বাস্তবায়ন রয়েছে? যদি তা না থাকে, তবে আমি কীভাবে নিজেকে তখন রূপান্তর করতে পারি?

উত্তর:


26

অবশ্যই - আপনার কেবল ToListAsync()পদ্ধতিটি দরকার যা System.Linq.Asyncনুগেট প্যাকেজে রয়েছে । এখানে একটি সম্পূর্ণ উদাহরণ:

প্রকল্প ফাইল:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="System.Linq.Async" Version="4.0.0" />
  </ItemGroup>

</Project>

কোড:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        IAsyncEnumerable<string> sequence = GetStringsAsync();
        List<string> list = await sequence.ToListAsync();
        Console.WriteLine(list.Count);
    }

    static async IAsyncEnumerable<string> GetStringsAsync()
    {
        yield return "first";
        await Task.Delay(1000);
        yield return "second";
        await Task.Delay(1000);
        yield return "third";
    }
}

এটির জন্য ধন্যবাদ, আকর্ষণীয় যে এটি। নেট কোর 3.1 ফ্রেমওয়ার্কের অংশ নয়।
বিশ

4
@ টুয়েন্টি: একটি পৃথক প্যাকেজ হিসাবে, এটি প্ল্যাটফর্মগুলিতে সহজেই পিছনে পিছনে ব্যবহারযোগ্য।
জন স্কিটি

@ জোনস্কিট এই প্যাকেজটি এবং অ্যাডো.নেট কোর ব্যবহার করার সময় ত্রুটি ঘটে।
ca9163d9

@ ca9163d9: "এটির ত্রুটি ঘটে" সত্যিই খুব বেশি তথ্য সরবরাহ করে না। আমি আপনাকে সম্পূর্ণ ন্যূনতম প্রজননযোগ্য উদাহরণ সহ একটি নতুন প্রশ্ন জিজ্ঞাসা করার পরামর্শ দিচ্ছি ।
জন স্কিটি

@ জনস্কিট, এখনই এটি পুনরুত্পাদন করেছে। await iOrderedQueryable.ToListAsync(cancellationToken)নুগেট প্যাকেজ যুক্ত করার পরে এটি ব্যর্থ হয়েছিল। আমি ন্যুগেট প্যাকেজটি সরিয়ে দেওয়ার পরে ত্রুটি চলে গেছে।
ca9163d9
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.