如何使用LINQ和连接检索CRM Guid?

时间:2014-04-29 19:48:36

标签: 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()));
                }

这会引发错误:

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

这给出了:

“join子句中某个表达式的类型不正确。在”加入“调用中类型推断失败”

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

1 个答案:

答案 0 :(得分:5)

我认为您不能在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