异常:尝试使用"枚举.任何方法与移动服务"查询时



我有一个使用 Xamarin 窗体构建的移动应用,并且我在 Azure 移动应用中使用脱机数据同步,以便在我的移动应用程序中启用脱机同步

所以 我有两张桌子

  • 采购订单
  • 采购订单详情

    public IMobileServiceSyncTable<PurchaseOrders> PurchaseOrdersTable;
    public IMobileServiceSyncTable<PurchaseOrderDetails> PurchaseOrderDetailsTable;
    

并且我想根据用户 ID同步采购订单表中的记录

,然后根据采购订单的 ID同步采购订单详细信息表中的记录

为此,我正在尝试这个

根据用户 ID 获取采购订单

var purchaseOrders = (await GetAllPurchaseOrdersAsync(syncFromServer:true, userId)).ToList();
// in sync method 
await PurchaseOrdersTable.PullAsync(queryName, PurchaseOrdersTable.CreateQuery().Where(w => w.Userid == userId));

当我尝试根据采购订单列表中的 ID 获取采购订单详细信息时

await PurchaseOrderDetailsTable.PullAsync(queryName,
PurchaseOrderDetailsTable.CreateQuery().Where(pod => purchaseOrders.Any(po => po.Id == pod.PoId)));

我得到以下异常

'value(System.Collections.Generic.List'1[ProjectName.Models.PurchaseOrder]).Any(po => (po.ID == pod。PoId))' 在"位置"移动服务查询表达式中不受支持。

我可以得到有关上述错误的解释以及如何解决它吗?

如果您的移动数据由表服务支持,则 Any 不是受支持的 LINQ 运算符(请参阅:https://learn.microsoft.com/en-us/rest/api/storageservices/query-operators-supported-for-the-table-service),因此这可能是异常的来源。

由于PurchaseOrder不包含PurchaseOrderDetail集合,我能想到的一种解决方法是迭代purchaseOrders并从purchaseOrderDetails中进行选择。

var poDetails = new List<PurchaseOrderDetail>();
foreach (var po in purchaseOrders)
{
var poDetail = await PurchaseOrderDetails.PullAsync(queryName, PurchaseOrderDetailsTable.CreateQuery().Where(pod => po.Id == pod.PoId);
poDetails.Add(poDetail);
}

相关内容

  • 没有找到相关文章

最新更新