Q: I can't figure out where this NullReferenceException is coming from EDIT Upon further reflection I decided to amend my answer below to reduce the possibility of misinterpretation of the problem.
I am getting a NullReferenceException on this IEnumarable LINQ query:
designations.ForEach(desg => 
desg.ModifiedBy.UserName = userNames.SingleOrDefault(name => 
  desg.ModifiedBy != null && name.Id == desg.ModifiedBy.Id) != null ? 
  userNames.SingleOrDefault(name => name.Id == desg.ModifiedBy.Id).UserName : 
  "Not Available");

My best guess at the moment is that it comes from the following statement on the third line of the code above:
desg.ModifiedBy != null && name.Id == desg.ModifiedBy.Id

and the runtime is throwing a NullReferenceException on desg.ModifiedBy.Id. However, I "know" that c# truth-ness evaluations short-circuit (see, e.g., || Operator). Here, if desg.ModifiedBy == null then we should never get to evaluate name.Id == desg.ModifiedBy.Id. Nonetheless, this seems to be happening. Is this possible?

A: I think you are getting null at value assignation 
desg.ModifiedBy.UserName = userNames.SingleOrDefault(name =>

