public static Tuple <int, ExpandoObject> ToSyncObject(this SPListItem listItem, ListMapping mapping) { var result = (IDictionary <string, object>) new ExpandoObject(); mapping.ListMappingFields.ToList().ForEach(item => { var spField = item.ItemName.IsGuid() ? listItem.FieldById(item.ItemName.ToGuid()) : listItem.FieldByName(item.ItemName); object spItemValue; try { spItemValue = (spField != null) ? listItem.GetObjectValue(spField) : string.Empty; } catch { spItemValue = string.Empty; } result.Add(item.ItemName, spItemValue); }); return(new Tuple <int, ExpandoObject>(listItem.ID, (ExpandoObject)result)); }