CRM 2016通过ConcerObjectId.Name获取电子邮件不起作用

时间:2016-07-21 22:50:47

标签: c# linq-to-sql dynamics-crm-2013

我创建了一个控制台应用程序来从" Dyanmics CRM 2016"中提取信息。我使用XrmServiceContext来获取数据,并且我能够从不同的实体中提取信息,但在获取特定属性EmailSet时遇到问题。

我的代码:

//This works
var test= context.EmailSet.FirstOrDefault(e => e.RegardingObjectId.Id == Guid);
//This doesn't work
var test= context.EmailSet.FirstOrDefault(e => e.RegardingObjectId.Name == "somename");    

这一行抛出异常:

"Invalid 'where' condition. An entity member is invoking an invalid property or method."  

问题:是否可以EmailSet查询RegardingObjectId.Name

我没有看到有关此房产的任何特别信息,希望有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

不幸的是,Linq To CRM有一些缺点,但你可以使用更灵活的fetchxml。

var results = service.RetrieveMultiple(
                    new FetchExpression(
                        string.Format("<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                        "<entity name='email'>" +
                        "<attribute name='subject' />" +
                        "<filter type='and'>" +
                        "<condition attribute='regardingobjectidname' operator='eq' value='{0}' />" +
                        " </filter>" +
                        "</entity>" +
                        "</fetch>", "foobar")));

var emails = results == null
    ? new List<Email>()
    : results.Entities.Cast<Email>();