4

CRM SDK で電子メールで見込み客を取得するためのサンプル コードを提供してもらえますか? このように機能する組み込み関数はありますか?

Guid leadID = someLeadManager.GetByEmail(email);
4

2 に答える 2

9

サービスを取得したと仮定すると、次のクエリを実行できます。

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);
}
于 2013-02-22T19:35:18.323 に答える
4

特定のメールがある見込み客を取得しますか? その場合、このようなことができます。

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 フィールドに wantEmailAddress を持つすべての見込み客が取得されます。次に、呼び出した場所から一致するものがあるかどうかを確認できます。

EntityCollection leadCollection = GetLeadsWithEmail(
  service, "someone@example.com");
Entity entity = leadCollection[0];

おそらく、最初にコレクション内のエンティティの数を確認し、leadCollection.Entities.Countそこから続行する必要があります。

MSDNのサンプルを次に示します。

于 2013-02-22T10:16:45.430 に答える