3

У меня есть наблюдаемая коллекция m_Tree. Он содержит объекты типа Planet, у которого есть свойство Name. В коллекции могут быть сотни предметов. Как быстро найти планету.Name = «Юпитер» в окне QuickWatch в VS?Visual Studio QuickWatch - как быстро найти элемент в коллекции в окне QuickWatch

В настоящее время я должен вручную развернуть каждый автомобиль в коллекции и искать его имя, но это может беспокоить. Яркие выражения или LINQ не работают в QuickWatch, насколько я могу видеть.

Вот что я попытался с помощью LINQ

from item in m_Tree where item.Name == "Jupiter" select item 

но QuickWatch показывает ошибку

из пункта в m_Tree где item.Name == "Юпитер" выберите пункт
Выражение не может содержать выражения запроса

+1

См. Http://stackoverflow.com/questions/36264959/is-there-a-data-grid-for-the-watch-window-in-visual-studio –

ответ

1

Хотя мой ответ не о том, чтобы делать это в QuickWatch, это может помочь вам получить работу сделанный.

В режиме отладки вы можете использовать Immediate Window для этого. Если вы еще не открыли, откройте окно Immediate и выполните запрос.

var jupiters = (from item in m_Tree where item.Name == "Jupiter" select item).ToList(); 
jupiters // prints the objects in the Immediate Window 

Я использую Immediate Window много, и нахожу его очень полезным. Надеюсь, что это тоже поможет.

+1

Обратите внимание, что OP помечен как вопрос VS2013, и то, что вы предлагаете, будет работать только в VS2015 и выше. –

+0

К сожалению, я не знал, что он недоступен в VS2013. Спасибо что подметил это. –

+0

Спасибо, но LINQ или lambdas не работают в окне Immediate или QuickWatch, я пробовал это, прежде чем публиковать этот вопрос. – cd491415

3

Я создал commercial extension for Visual Studio, который решает именно эту проблему. OzCode заменяет обычные окна QuickWatch и DataTip (зависание над переменной). Если вы просто ищете значение свойства как текст, вы можете использовать функцию поиска:

Search

Но если вы хотите только тогда, когда его значение в поле «Имя» собственность «Юпитер», а не в любом другом имуществе вы можете использовать фильтр OzCode: Filter

И введите [obj].Name == "Jupiter" как ваш предикат.

+1

Ницца! Я думаю, что это действительно удовлетворит требование OP. +1 для приятной анимации. –

+0

Спасибо, это полезно. Я не думаю, что OzCode свободен, хотя. – cd491415

+0

@ cd491415, если предложение Омера полезно для вас, не могли бы вы отметить его как ответ? Таким образом, это может помочь другим членам сообщества решить те же проблемы. –