【问题标题】:Dynamics CRM 2011 Linq Group Join Method SyntaxDynamics CRM 2011 Linq Group Join 方法语法
【发布时间】:2013-10-09 17:00:30
【问题描述】:

如何通过方法语法使用组加入?

我可以使用如下查询语法进行组加入:

var contAndAcc = from contact in linq.ContactSet
                    join account in linq.AccountSet
                    on contact.ParentCustomerId.Id equals account.AccountId
                    into accountGroup
                    from account in accountGroup.DefaultIfEmpty()
                    select new{contact = contact, account = account};


编译器将查询语法转换为方法语法,所以上面的方法一定可以写成方法语法。
这些不起作用:

var contAndAcc = linq.ContactSet.GroupJoin(
    linq.AccountSet, // collection to join to
    contact => contact.ParentCustomerId.Id,
    account => account.AccountId, 
    (contact, account) => contact); 

var contAndAcc = linq.ContactSet.GroupJoin(
    linq.AccountSet,
    contact => contact.ParentCustomerId.Id,
    account => account.AccountId,
    (contact, account) => contact)
    .DefaultIfEmpty()
    .Select(contact=>contact);

var contAndAcc = linq.ContactSet.GroupJoin(
    linq.AccountSet,
    contact => contact.ParentCustomerId.Id,
    account => account.AccountId,
    (contact, account) => contact)
    .DefaultIfEmpty()
    .SelectMany((contact) => contact);

无论我尝试什么,我都会收到以下消息:
“GroupJoin”操作后必须跟一个“SelectMany”
集合选择器调用“DefaultIfEmpty”方法的操作。

我也很想使用 IEqualityComparer;这可能吗?

【问题讨论】:

    标签: linq dynamics-crm-2011


    【解决方案1】:

    因为我没有对 CRM 做太多的 Linq,所以总在黑暗中刺伤,但它被转换为的 QueryExpressions 不支持返回整个实体。尝试列出您想要返回的每一列,而不是实体本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      相关资源
      最近更新 更多