Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
异步LINQ查询_Linq_Asp.net Core_Ef Core 3.0 - Fatal编程技术网

异步LINQ查询

异步LINQ查询,linq,asp.net-core,ef-core-3.0,Linq,Asp.net Core,Ef Core 3.0,我正在处理一个应该能够异步完成的LINQ查询,但它没有计算。在尝试修复此问题时,我发现此页面: 它声明我应该能够将AsAsAsyncEnumerable添加到我的LINQ以使其工作。但是,它甚至不编译 我有以下功能可以工作,但正在同步运行: AreaLookupTb = _context.AreaLookupTb .AsEnumerable() .GroupJoin(_context.LocationTb,

我正在处理一个应该能够异步完成的LINQ查询,但它没有计算。在尝试修复此问题时,我发现此页面:

它声明我应该能够将AsAsAsyncEnumerable添加到我的LINQ以使其工作。但是,它甚至不编译

我有以下功能可以工作,但正在同步运行:

    AreaLookupTb = _context.AreaLookupTb
                    .AsEnumerable()
                    .GroupJoin(_context.LocationTb, a => a.AreaId, b => b.AreaId, (a, b) => new GroupingStats { ID = a.AreaId, Name = a.Name, Description = a.Description, Count = b.Count() })
                    .OrderBy(n => n.Name)
                    .ToList();
您可能会认为我需要做的就是使其异步:

    AreaLookupTb = await _context.AreaLookupTb
                    .AsAsyncEnumerable()
                    .GroupJoin(_context.LocationTb, a => a.AreaId, b => b.AreaId, (a, b) => new GroupingStats { ID = a.AreaId, Name = a.Name, Description = a.Description, Count = b.Count() })
                    .OrderBy(n => n.Name)
                    .ToListAsync();
唉,情况并非如此。VS2019给我的错误是:

错误CS1061“IAsyncEnumerable”不包含“GroupJoin”的定义,并且找不到接受“IAsyncEnumerable”类型的第一个参数的可访问扩展方法“GroupJoin”(是否缺少using指令或程序集引用?)


任何帮助都将不胜感激。

您应该将所有
可枚举
转换为
异步可枚举

AreaLookupTb = await _context.AreaLookupTb
                    .ToAsyncEnumerable()
                    .GroupJoin(_context.LocationTb.ToAsyncEnumerable(), a => a.AreaId, b => b.AreaId, (a, b) => new GroupingStats { ID = a.AreaId, Name = a.Name, Description = a.Description, Count = b.Count() })
                    .OrderBy(n => n.Name)
                    .ToListAsync();

您应该将所有
可枚举
转换为
异步可枚举

AreaLookupTb = await _context.AreaLookupTb
                    .ToAsyncEnumerable()
                    .GroupJoin(_context.LocationTb.ToAsyncEnumerable(), a => a.AreaId, b => b.AreaId, (a, b) => new GroupingStats { ID = a.AreaId, Name = a.Name, Description = a.Description, Count = b.Count() })
                    .OrderBy(n => n.Name)
                    .ToListAsync();

它是
ToAsyncEnumerable()
not
AsAsAsyncEnumerable()
。如果答案有用,请将其标记为已接受,否则请对其进行注释。它是
ToAsyncEnumerable()
not
AsAsAsyncEnumerable()
。如果答案有帮助,请将其标记为已接受,否则请对其进行评论。我尝试了几种不同的方法来更正此问题,但没有一种方法有效。当我将AsEnumerable更改为ToAsyncEnumerable时,VS告诉我它应该是AsEnumerable并且不会编译。如果我这样做,我就回到了前面提到的第1步。长话短说,这不起作用。链接到GitHub。我尝试了几种不同的方法来纠正这一点,但没有一种方法起作用。当我将AsEnumerable更改为ToAsyncEnumerable时,VS告诉我它应该是AsEnumerable并且不会编译。如果我这样做,我就回到了前面提到的第1步。长话短说这不起作用。链接到GitHub。