public static List <SPPrincipal> GetRelatedItemUsers(this SPListItem item) { List <SPPrincipal> arrRealtedItemUsers = new List <SPPrincipal>(); dynamic relatedItems; try { relatedItems = item[SPBuiltInFieldId.RelatedItems]; if (relatedItems == null) { relatedItems = item[SPBuiltInFieldId.RelatedItems]; } } catch { relatedItems = null; } if (relatedItems == null) { return(arrRealtedItemUsers); } String relatedItemsString = relatedItems.ToString(); dynamic jsonRelatedItems = JsonConvert.DeserializeObject(relatedItemsString); foreach (dynamic relItem in jsonRelatedItems) { int relatedItemId = (int)relItem["ItemId"]; string relatedlistIdString = relItem["ListId"]; Guid relatedlistId = new Guid(relatedlistIdString); SPList relatedList = item.Web.Lists[relatedlistId]; SPListItem relatedItem; try { relatedItem = relatedList.GetItemById(relatedItemId); } catch (Exception) { continue; } List <string> arrRelatedListUserFields = relatedList.GetListUserFields(); arrRealtedItemUsers.AddRange(relatedItem.GetUsersFromUsersFields(arrRelatedListUserFields)); } return(arrRealtedItemUsers); }