Below async method returns Task<List<Guid>>
instead of List<Guid>
.
Can anyone suggest how to return List?
public static async Task<List<Guid>> ConvertTaxRequest(Proto.GetTaxListRequest request)
{
return await Task.Run(() =>
{
return new List<Guid>(request.TaxKeyList.ToList().ConvertAll(Guid.Parse));
});
}
If you want to return List<Guid>
without any tasks, just do it:
public static List<Guid> ConvertTaxRequest(Proto.GetTaxListRequest request) =>
request.TaxKeyList.Select(item => Guid.Parse(item)).ToList();
and you can put
List<Giud> myList = ConvertTaxRequest(myRequest);
If you have to return Task
(say for API requirement) and request...ToList()
is fast enough
you can construct task from the result:
public static Task<List<Guid>> ConvertTaxRequest(Proto.GetTaxListRequest request) =>
Task.FromResult(request.TaxKeyList.Select(item => Guid.Parse(item)).ToList());
If request...ToList()
is slow, then you can run it asynchronosly
public static Task<List<Guid>> ConvertTaxRequest(Proto.GetTaxListRequest request) =>
Task.Run(() => request.TaxKeyList.Select(item => Guid.Parse(item)).ToList());
In both cases with Task
you should await them
// Since ConvertTaxRequest returns not List<Guid>, but Task<List<Guid>>
// We should await when Task is completed
List<Giud> myList = await ConvertTaxRequest(myRequest);