我有一個異步串列(toListAsync),我需要對它執行一個linq select陳述句,但它不作業,因為任務不包含select的定義。 我可以做什么呢?
public async Task<List<FilesTable>> List()
{
using (var ctx = Configuration.OpenContext(false)
{
return await ctx.FilesTables.Include(e => e.Subsection).ToListAsync()。
}
}
//以上是在第一個檔案(FilesTable.cs)中,
//下面是在另一個檔案(file_apis.cs)中。
public async Task<List<FilesModel> > GetFiles()
{
return await new FilesTable().List().Select(e => (FilesModel)e).ToList() 。
}
uj5u.com熱心網友回復:
添加使用System.Linq;命名空間。
然后你可以這樣做:
(await yourMethod.ToListAsync()) 。 Select(a => new { }) 。
你應該在await關鍵字之前和ToListAsync()方法之后添加括號
uj5u.com熱心網友回復:
從性能角度來看,最好先使用過濾器,然后在最后使用ToListAsync,所以你可以使用:
MyList.Where(x => ...).Select(x => ...) .ToListAsync()。
否則,你將加載不必要的資料量到記憶體中,這將降低性能,取決于資料量。但是如果你在ToList之前進行過濾,那么將只加載需要的資料。
[Update]
。參考你的代碼,你可以在FilesTable.cs中加入一個新的方法,它將進行過濾并回傳所需的串列:
public async Task<List<FilesModel>>ListFiles()
{
using(var cts = Configuration.OpenContext(false))
{
return await ctx.FilesTables.Include(e => e.Subsection).Select(e => (FilesModel)e).ToListAsync() 。
}
}
uj5u.com熱心網友回復:
你可以使用或brekets來等待迭代結束做選擇,或者你可以使用IAsyncEnumerable
。public async IAsyncEnumerable< FilesTable> List()。
{
using (var ctx = Configuration.OpenContext(false)
{
return ctx.FilesTables.Include(e => e.Subsection).AsAsyncEnumerable()。
}
}
public async IAsyncEnumerable<FilesModel> GetFiles()
{
await foreach(var value in new FilesTable()。 List())。
{
yield return value。
}
}
//或使用那個nuget包System.Linq.Async NuGet包。
public async Task<List<FilesModel> > GetFiles()
{
return await new FilesTable().List() .ToListAsync()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/325375.html
標籤:
下一篇:如何對以逗號分隔的數字進行排序
