Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 例外:尝试使用Enumerable时。移动服务查询的任何方法_Linq_Xamarin.forms_Azure Mobile Services_Query Expressions_Notsupportedexception - Fatal编程技术网

Linq 例外:尝试使用Enumerable时。移动服务查询的任何方法

Linq 例外:尝试使用Enumerable时。移动服务查询的任何方法,linq,xamarin.forms,azure-mobile-services,query-expressions,notsupportedexception,Linq,Xamarin.forms,Azure Mobile Services,Query Expressions,Notsupportedexception,我使用Xamarin表单构建了一个移动应用程序 所以, 我有两张桌子 采购订单 采购订单明细 public IMobileServiceSyncTable<PurchaseOrders> PurchaseOrdersTable; public IMobileServiceSyncTable<PurchaseOrderDetails> PurchaseOrderDetailsTable; 当我试图根据采购订单列表中的Id获取采购订单详细信息时 await Purchas

我使用Xamarin表单构建了一个移动应用程序

所以, 我有两张桌子

  • 采购订单
  • 采购订单明细

    public IMobileServiceSyncTable<PurchaseOrders> PurchaseOrdersTable;
    public IMobileServiceSyncTable<PurchaseOrderDetails> PurchaseOrderDetailsTable;
    
    当我试图根据采购订单列表中的Id获取采购订单详细信息时

    await PurchaseOrderDetailsTable.PullAsync(queryName,
                             PurchaseOrderDetailsTable.CreateQuery().Where(pod => purchaseOrders.Any(po => po.Id == pod.PoId)));
    
    我得到下面的例外

    “Where”移动服务查询表达式中不支持“value(System.Collections.Generic.List`1[ProjectName.Models.PurchaseOrder])。Any(po=>(po.Id==pod.PoId))”


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

    如果您的移动数据由表服务支持,则Any不是受支持的LINQ运营商(请参阅:),因此这可能是异常的来源

    由于
    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);
    }
    
    var podetals=newlist();
    foreach(采购订单中的var po)
    {
    var poDetail=wait PurchaseOrderDetails.PullAsync(queryName,PurchaseOrderDetailsTable.CreateQuery()。其中(pod=>po.Id==pod.PoId);
    添加(poDetail);
    }
    
    如何定义
    PurchaseOrder
    PurchaseOrderDetail
    之间的关系?@RyanHill MSFT感谢您的回复,我正在处理一个旧项目,它不包含
    PurchaseOrders
    PurchaseOrderDetails
    之间的关系。谢谢您的回答,我也用同样的方法解决了这个问题Y
    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);
    }