private CrmNumber GetNextAttachmentNo(ICrmService service, Guid EmailID)
{
    CrmNumber
retval = new CrmNumber(0);
    // condition
   
ConditionExpression condition = new ConditionExpression();
    condition.AttributeName = "activityid";
    condition.Operator = ConditionOperator.Equal;
    condition.Values = new object[] { EmailID.ToString() };
    //filter
   
FilterExpression filter = new FilterExpression();
    filter.FilterOperator = LogicalOperator.And;
    filter.Conditions.Add(condition);
    // columns
   
ColumnSet cols = new ColumnSet();
    cols.AddColumn("attachmentnumber");
    // new query
   
QueryExpression query = new QueryExpression();
    query.EntityName = EntityName.activitymimeattachment.ToString();
    query.ColumnSet = cols;
    query.Criteria = filter;
    // request object
   
RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();
    retrieve.Query = query;
    // execute
   
RetrieveMultipleResponse retrieved = (RetrieveMultipleResponse)service.Execute(retrieve);
    //Find max attachment number
   
foreach (object o in retrieved.BusinessEntityCollection.BusinessEntities)
    {
   // cast
       
activitymimeattachment eat = (activitymimeattachment)o;
        if
(eat.attachmentnumber.Value > retval.Value)
        {   // higher, remember it!
            retval.Value = eat.attachmentnumber.Value;
        }
    }
    // done; we want the next one

    retval.Value += 1;
    return
retval;
}