 <p>You could try writing a small wrapper around the <code>List</code> of your object type, and giving it a string based <code>[]</code> overloaded accessor. Like this:</p> <pre><code>public class ComplexType { public string PropertyName { get; set; } public string Layer { get; set; } public string DisplayName { get; set; } } public class DebuggableList : List&lt;ComplexType&gt; { public ComplexType this[string key] { get { return this.FirstOrDefault(i =&gt; i.PropertyName == key); } } } class Program { static void Main(string[] args) { var myList= new DebuggableList(); myList.Add(new ComplexType { DisplayName = "XXX", Layer = "YYY", PropertyName = "ZZZ" }); myList.Add(new ComplexType { DisplayName = "AAA", Layer = "BBB", PropertyName = "CCC" }); myList.Add(new ComplexType { DisplayName = "DDD", Layer = "EEE", PropertyName = "FFF" }); } } </code></pre> <p>In the watch window, you can then access your desired object using <code>myList["XXX"]</code>, and the object with <code>PropertyName</code>=="XXX" will be displayed.</p>