Dynamics CRM:LINQ中的复合密钥联接问题



我在LINQ to LEFT JOIN同一实体中有以下查询:

query = from a in orgSvcContext.CreateQuery("entity1")
join b in orgSvcContext.CreateQuery("entity1")
on new { v1 = a["field1"], v2 = a["field2"] } equals new { v1 = b["field2"], v2 = b["field1"] } into gr
from c_joined in gr.DefaultIfEmpty()
where c_joined["field0"] == null && (a["field1"].Equals(new Guid(@param)) || a["field2"].Equals(new Guid(@param)))
select a;

它抱怨以下错误:

无效的'join'条件。实体成员正在调用无效的属性或方法

我指的是:https://learn.microsoft.com/en-us/dotnet/csharp/linq/join-by-using-composite-keys

我的JOIN有什么问题吗?如果我只是使用,我没有问题

on a["field1"] equals  b["field2"]

提前谢谢。

new { v1 = a["field1"], v2 = a["field2"] }构造无法解析为属性名称。

Dynamics CRM的LINQ实现非常有限,因为它试图将LINQ表达式转换为QueryExpression查询。这些查询反过来只实现SQL语言的一个子集。

当连接两个实体时,说明在on之后,左侧和右侧可以解析为两个实体的现有查找属性。

请记住,并非所有QueryExpression功能都可以用于LINQ查询。

最新更新