C# 如何使用Dynamics CRM SDK搜索lead或account?
是否有人可以提供一个示例代码,用于在CRM SDK中通过电子邮件检索潜在客户?有没有像这样工作的内置函数C# 如何使用Dynamics CRM SDK搜索lead或account?,c#,dynamics-crm,dynamics-crm-online,C#,Dynamics Crm,Dynamics Crm Online,是否有人可以提供一个示例代码,用于在CRM SDK中通过电子邮件检索潜在客户?有没有像这样工作的内置函数 Guid leadID = someLeadManager.GetByEmail(email); 是否要检索具有特定邮件的潜在客户?在这种情况下,可以做类似的事情 private EntityCollection GetLeadsWithEmail( IOrganizationService service, String wantedEmailAddress) { QueryEx
Guid leadID = someLeadManager.GetByEmail(email);
是否要检索具有特定邮件的潜在客户?在这种情况下,可以做类似的事情
private EntityCollection GetLeadsWithEmail(
IOrganizationService service, String wantedEmailAddress)
{
QueryExpression query = new QueryExpression();
query.EntityName = "lead";
// the columns you want
query.ColumnSet = new ColumnSet() { AllColumns = true };
query.Criteria = new FilterExpression();
query.Criteria.FilterOperator = LogicalOperator.And;
query.Criteria.Conditions.Add(new ConditionExpression(
"emailaddress1", ConditionOperator.Equal, wantedEmailAddress));
return service.RetrieveMultiple(query);
}
这将检索在其emailaddress1字段中具有wantedEmailAddress的所有潜在客户。
然后,您可以检查在您调用它的地方是否有匹配项
EntityCollection leadCollection = GetLeadsWithEmail(
service, "someone@example.com");
Entity entity = leadCollection[0];
您可能应该首先使用leadCollection.entities.Count检查集合中的实体数,然后从那里继续
从MSDN。假设您已获得服务,则可以执行以下查询
private Guid GetGuidByEmail(String email)
{
QueryExpression query = new QueryExpression
{
EntityName = "lead",
ColumnSet = new ColumnSet("emailaddress1"),
Criteria = new FilterExpression
{
Filters =
{
new FilterExpression
{
Conditions =
{
new ConditionExpression(
"emailaddress1", ConditionOperator.Equals, email)
}
}
}
}
};
Entity entity = service.RetrieveMultiple(query).Entities.FirstOrDefault();
if(entity != null)
return entity.Id;
return Guid.Empty;
}
现在,如果您需要筛选电子邮件的部分的匹配项,则查询会变短,相反,您可以像这样使用LINQ进行选择
private IEnumerable<Guid> GetGuidsByEmail(String email)
{
QueryExpression query = new QueryExpression
{
EntityName = "lead",
ColumnSet = new ColumnSet("emailaddress1")
};
IEnumerable<Entity> entities = service.RetrieveMultiple(query).Entities;
return entities
.Where(element => element.Contains("emailaddress1"))
.Where(element => Regex.IsMatch(element["emailaddress1"], email))
.Select(element => element.Id);
}
private IEnumerable GetGuidsByEmail(字符串电子邮件)
{
QueryExpression query=新建QueryExpression
{
EntityName=“lead”,
ColumnSet=新的ColumnSet(“emailaddress1”)
};
IEnumerable entities=service.RetrieveMultiple(query).entities;
返回实体
.Where(element=>element.Contains(“emailaddress1”))
.Where(element=>Regex.IsMatch(element[“emailaddress1”],email))
.Select(element=>element.Id);
}
用于检索实体的电子邮件值是完整准确的地址,还是您需要使用匹配?我只需要准确的地址,但thx非常适合提供筛选电子邮件部分匹配的详细信息。+1用于查询表达式和模块化。但是,他应该使用LINQ和foreach来确保即使是第0个元素也不会使他的执行崩溃。如果逻辑运算符只有一个条件,那么似乎没有必要使用它。不建议获取所有列(我犯了一个错误,因为这个原因,我忘了检查缺少的值)。