首先,我很抱歉,因为这是我第二次写这个问题,但之前的解释很糟糕,现在很接近。
我正在为CRM数据库的搜索页面执行linq查询,并且如下所示wrtiting正常查询不起作用,我得到例外:
[System.ServiceModel.FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>] = {"'Contact' entity doesn't contain attribute with Name = 'title'."}
对于连接查询,在子句中的那个是r.Name ==“Me”&amp;&amp; j.LastName ==“他”我必须用两个Where子句进行查询,因为我得到了与上面相同的异常,说表'r'没有'LastName'attributte。
var cms = from i in aux_pr
join cal in Contact on i.aux_CallerRequestorID.Id equals cal.ContactId.Value
join sub in Subject on i.aux_ClassificationID.Id equals sub.SubjectId
where cal.FullName.Contains(searchTerm) ||
sub.Title.Contains(searchTerm)
在这种情况下,我该如何进行此查询。提前谢谢!
答案 0 :(得分:5)
我想评论我学到了什么以及我找到的解决方案,我希望能帮到某个人。 CRM LINQ存在一些限制,如here
所述我找到的第一个,有这样的实体引用:
CrmEntityReference Caller
{
Guid ID;
string name;
}
我可以选择Caller.name,但我不能在where子句中使用Caller.name。解决方案 - &gt;加入表格
第二个限制是,当我们在查询中加入时,如果它们是AND谓词,我们可以在其中有不同的表,我们必须写两个子句,如下所示:
where cal.FullName.Contains(searchTerm)
where sub.Title.Contains(searchTerm)
但是当问题出现时,我们需要使用OR谓词而不是AND,我们唯一的解决方案就是做两个查询并在完成这些查询之后。
我有四个查询可以只使用一个调用,现在处于开发阶段,由于记录的数量,性能很好,但我们会在测试阶段看到这是如何工作的。
答案 1 :(得分:0)
尝试创建两个不同的过滤器..
var cms = from i in aux_pr
join cal in Contact on i.aux_CallerRequestorID.Id equals cal.ContactId.Value
join sub in Subject on i.aux_ClassificationID.Id equals sub.SubjectId
where cal.FullName.Contains(searchTerm) ||
where sub.Title.Contains(searchTerm)