private static DMListField MapToListField(DMListField columnEmail, bool isPrimayKey)
 {
     return(new DMListField
     {
         ID = columnEmail.ID,
         FieldType = columnEmail.FieldType,
         Name = columnEmail.Name,
         PrimaryKey = isPrimayKey,
         UserAccess = columnEmail.UserAccess,
         AllowDupes = columnEmail.AllowDupes,
         ListField = columnEmail.ListField,
         Created = columnEmail.Created,
         Modified = columnEmail.Modified,
         StorageType = columnEmail.StorageType,
         UserOptOut = columnEmail.UserOptOut
     });
 }
        public int Create()
        {
            using (var em = new EMWebServicesClientExtension(Auth.GetToken(), Settings.Default.EndPoint))
            {
                // Prepare fields to add to an EM list.
                DMSourceColumn[] sourceColumns = new DMSourceColumn[2];
                sourceColumns[0] = new DMSourceColumn {
                    Name = "email"
                };
                sourceColumns[1] = new DMSourceColumn {
                    Name = "firstname"
                };
                int defaultKey;
                var allColumns = em.ListManager.GetColumnMappingAll(em.Token, ref sourceColumns, out defaultKey);

                // assume that all fields exist in Email Manager
                DMListField[] listFields = new DMListField[2];
                listFields[0] = MapToListField(allColumns.SingleOrDefault(column => column.Name == sourceColumns[0].Name), true);
                listFields[1] = MapToListField(allColumns.SingleOrDefault(column => column.Name == sourceColumns[1].Name), false);

                // Create a list
                int listId = em.ListManager.CreateRecipientList(
                    em.Token,
                    "API Created List " + DateTime.Now.ToString("yyyyMMdd_hhmmss"),
                    "Description Text",
                    309,
                    false,
                    false,
                    ref listFields,
                    null,
                    false
                    );

                return(listId);
            }
        }