using System.Collections.Generic;
using System.Threading.Tasks;
public class AsyncQuerySet
public List<Task<IEnumerable<int>[]>> EnumerableIds { get; set; }
public List<Task<int[]>> ArrayIds { get; set; }
this.EnumerableIds = new List<Task<IEnumerable<int>[]>>();
this.ArrayIds = new List<Task<int[]>>();
public IEnumerable<int> Flatten()
return this.ArrayIds.SelectMany(w => w.Result).Distinct().Union(
this.EnumerableIds.SelectMany(wc => wc.Result).SelectMany(x => x)