Hello,

Recently I have create a timer job to alert users to have task on a SharePoint list.

On my list I have on column "Assigned To" and it can contains user or group.

This code test field value to determine if it an "SPUser" or "SPGroup" object and retrieve all assigned users :

  1. //Group or User are allowed
  2. SPFieldUser userField = (SPFieldUser)item.Fields.GetField("AssignedTo");
  3. SPFieldUserValue userFieldValue = (SPFieldUserValue)userField.GetFieldValue(item["AssignedTo"].ToString());
  4. var users = new List<SPUser>();
  5. //Tries to get SPUser
  6. if (userFieldValue.User != null)
  7. {
  8. users.Add(userFieldValue.User);
  9. }
  10. else
  11. {
  12. //if the field contain group
  13. SPGroup group = web.SiteGroups.GetByID(userFieldValue.LookupId);
  14. foreach (SPUser user in group.Users)
  15. {
  16. users.Add(user);
  17. }
  18. }
  19. foreach(var user in users)
  20. {
  21. //implement your code here
  22. }
If you have any questions you can use comments section ;)