如何使用LINQ和连接来修复CRM Guid?

Dev*_*erM 2 linq dynamics-crm-2011

我们正在使用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()));
                }
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

AttributeFrom和AttributeTo必须同时指定或者都是ommited.你不能只通过其中一个.AttributeFrom:,AttributeTo:ce_ProductId

这个错误是什么意思?
我怎样才能获得Guid?

更新:

我试着将查询分成几部分,以查看错误的生成位置,所以我有:

var query = from product in context.ProductSet
                            join contract in context.ContractSet
                            on product.Id equals contract.ce_ProductId.Id
Run Code Online (Sandbox Code Playgroud)

这给出了:

"join子句中某个表达式的类型不正确.在'Join'调用中类型推断失败"

感谢所有帮助的人......

Jos*_*ter 6

我不认为您可以在Linq语句中使用.Id属性.试试这个:

var query = from product in context.ProductSet
               join contract in context.ContractSet
               on product.ProductId equals contract.ce_ProductId.Id
Run Code Online (Sandbox Code Playgroud)

注意product.ProductId而不是product.Id.