如何返回Azure移动服务.Net后端表中的所有行

时间:2014-09-19 19:56:16

标签: xamarin azure-mobile-services

如何在没有Where子句的Azure移动服务.Net后端中获取表的所有行。这是我的尝试,它不起作用。它说未定义的成员。

public async Task<List<Customer>> FetchAllCustomers()
       {
           var allCustomers = new List<Customer>();
           try
           {
               var list = await _customerTable.ToListAsync();
               foreach (var customer in list)
               {
                   allCustomers.Add(customer);
               }
           }
           catch (Exception e)
           {
               Log.Info(Tag, "Error fetching Customers" + e.Message);
           }

           return allCustomers;
}

如何重新编写此简单方法以获取Azure Service中Customer表中的所有客户。我是从Xamarin.Android客户端调用的,我已成功将项添加到此表中。

2 个答案:

答案 0 :(得分:2)

卡洛斯已经在这里回答了类似的问题Azure Mobile Service query doesn't return all the rows

我添加了一个名为Active的新字段,因此我可以应用Where(active = Customer.Active);

查询现在看起来像这样

var list = await _customerTable.Take(100).Where(active => Customer.Active).ToListAsync();

答案 1 :(得分:0)

我遇到的问题是只从我的Azure表中返回了50条记录,但我知道还有更多。我使用以下内容与Xamarin C#查询表的总行数,然后使用行计数获取所有记录,如果低于1000则使用1000.请注意,count查询使用Take(0)以便不返回任何记录,只有总行数。

使用IQueryResultEnumerable来自Anzur Patel ITotalCountProvider投射错误Xamarin论坛。

Azure Mobile Service query doesn't return all the rows提供了仅获得50条记录的原因,以及如果总行数超过1000,我使用最大值1000的原因。

How to get the row count from an azure database?提供了使用includeTotalCount()的方法。

// query table to include the total row count
var tableRowCount = (await _syncRecordTable.Take(0)
                   .Where (SyncRec => SyncRec.userid == sOwnerUniquCode )   
                   .IncludeTotalCount()
                   .ToEnumerableAsync());

// get the row count
long tCount = ((IQueryResultEnumerable<syncrecords>)tableRowCount).TotalCount;


// convert long to int by casting
int iCount = (int) tCount;

if (iCount < 1000) {
    // get all records from the table
_listCloudSyncRec = (await _syncRecordTable.Take(iCount)
        .Where (SyncRec => SyncRec.userid == sOwnerUniquCode)
        .ToListAsync ());
}else {
_listCloudSyncRec = (await _syncRecordTable.Take(1000)
        .Where (SyncRec => SyncRec.userid == sOwnerUniquCode )
        .ToListAsync ());
}