如何在没有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客户端调用的,我已成功将项添加到此表中。
答案 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 ());
}