Generic function, which populates a collection based on collection interface implementation
If you look closely there is actually four loops in your code. Two is explicit and other two from code like items.OfType&lt;IStatusResult&gt;() where if you look at the implementation of OfType&lt;T&gt; is looks something like below

foreach (object obj in source)
      {
        if (obj is TResult)
          yield return (TResult) obj;
      }


I would rather prefer to have one foreach loop to loop through all the items once and based on the type of each item, assign the appropriate properties something like below

foreach (var item in items)
            {
                if (typeof(ICurrencyResult).IsAssignableFrom(item.GetType()))
                {
                    item.CurrencyName = currencies[item.Currency];
                }
                else if (typeof(IStatusResult).IsAssignableFrom(item.GetType()))
                {
                    item.StatusName = statuses[item.Status];
                }
            }