Depending on situation, you can use at least several approaches, such as:
1.
Dictionary<TKey, List<TValue>>
2.
Dictionary<TKey, List<ComplexObject>>
3.
Dictionary<TKey, Tuple<TValue1, TValue2>>
etc.
Based on
MSDN documention[
^], you can create a dictionary object to create relationship between file extensions and application which is able to open that extensions. For example:
Dictionary<string, List<string>> openWith =
new Dictionary<string, List<string>>();
openWith.Add("notepad.exe", new List<string>(){".txt", ".vbs", ".csv"});
openWith.Add("winword.exe", new List<string>(){".txt", ".vbs", ".csv", ".htm", ".html", ".doc", ".docx", ".dot", ".dotx", ".docm", ".dotm"});