我一直在转换我的一些 CRM4.0 插件以使用 CRM2011 SDK。我刚开始使用 LINQ 处理 Early-Bound 实体,但遇到了一个问题。
我正在尝试在连接实体中获取 OptionSetValue 的格式化值。在查看了这个 MSDN SDK Query Example之后,我设法检索了主要实体的格式化值,但似乎无法将其转换为连接实体。
下面的代码是我想要实现的示例。我首先使用 SDK 示例中的代码。
var query_join8 = (from a in sContext.AccountSet
join c in sContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
into gr
from c_joined in gr.DefaultIfEmpty()
select new
{
contact_name = c_joined.FullName,
account_name = a.Name,
account_addresstypecode = a.Address1_AddressTypeCode,
account_addresstypename = a.FormattedValues.ContainsKey("address1_addresstypecode") ? a.FormattedValues["address1_addresstypecode"] : null,
account_formattedValues = a.FormattedValues,
contact_addresstypecode = c_joined.Address1_AddressTypeCode,
contact_addresstypename = c_joined.FormattedValues.ContainsKey("address1_addresstypecode") ? c_joined.FormattedValues["address1_addresstypecode"] : null,
contact_formattedValues = c_joined.FormattedValues,
}).ToArray();
account_formattedValues 和 account_addresstypename 已更正,我可以访问该数据,但由于某种原因,contact_formattedValues 项目包含一个空集合,因此 contact_addresstypename 为空。
我这样做不正确,还是我错过了什么?有没有人能够或知道如何实现这一目标?任何帮助是极大的赞赏。