【问题标题】:How to retieve CRM Guid using LINQ and joins?如何使用 LINQ 和连接检索 CRM Guid?
【发布时间】:2023-03-20 15:06:01
【问题描述】:

我们正在使用 CRM 2011。我们与产品的实体引用签订了合同,并且每个产品都有一个对主题的实体引用。给定一个合同指南,我需要检索主题指南。

我是 LINQ 的初学者,但我编写过代码:

 var subject = from s in context.SubjectSet
                                       join product in context.ProductSet
                                           on s.Id equals product.SubjectId.Id
                                       join contract in context.ContractSet
                                           on product.Id equals contract.ce_ProductId.Id
                                       where contract.Id == gContractId
                                       select s;

                foreach (var s in subject)
                {
                    newReportableAction.ce_SupergroupRegarding =
                    new EntityReference(Xrm.Subject.EntityLogicalName, new Guid(s.Id.ToString()));
                }

这会引发错误:

必须同时指定或省略AttributeFrom 和AttributeTo。你不能只通过一个或另一个。 AttributeFrom: , AttributeTo: ce_ProductId

这个错误是什么意思?
如何获取指南?

更新

我尝试将查询分成几部分以查看错误是从哪里产生的,所以我有:

var query = from product in context.ProductSet
                            join contract in context.ContractSet
                            on product.Id equals contract.ce_ProductId.Id

这给出了:

“join 子句中表达式之一的类型不正确。调用‘Join’时类型推断失败”

感谢所有帮助...

【问题讨论】:

    标签: linq dynamics-crm-2011


    【解决方案1】:

    我认为您不能在 Linq 语句中直接使用实体的 .Id 属性。试试这个:

    var query = from product in context.ProductSet
                   join contract in context.ContractSet
                   on product.ProductId equals contract.ce_ProductId.Id
    

    注意product.ProductId 而不是product.Id

    【讨论】:

    • 我永远不会猜到这一点 - 感谢您的回答,因为错误消息似乎与分辨率无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多