コード例 #1
0
    public TryOptionAsync <IEnumerable <DepartmentEmployee> > Execute(DepartmentEmployeesQuery query, CancellationToken token = default)
    {
        var(count, department) = query;

        var dataQuery = client
                        .DepartmentQueryable <DepartmentEmployeeRecord>(department)
                        .Where(e => e.Type == nameof(DepartmentEmployeeRecord));

        if (count > 0)
        {
            dataQuery = dataQuery.Take(count);
        }

        return(async() =>
        {
            var iterator = dataQuery.ToFeedIterator();

            var employees = new List <DepartmentEmployee>();

            while (iterator.HasMoreResults)
            {
                foreach (var result in await iterator.ReadNextAsync(token))
                {
                    employees.Add(DepartmentEmployeeRecord.Map.ToDepartmentEmployee(result));
                }
            }

            return Some(employees.AsEnumerable());
        });
    }