Использование LINQ для поиска ключевого слова во всех свойствах графа объектов - PullRequest
2 голосов
/ 01 июля 2010

У меня есть опрос, который хранится в большом графе объектов переменной глубины, в зависимости от того, сколько разделов и подразделов пользователь выберет для создания.Мне нужно иметь возможность искать по всем свойствам для каждого объекта в графе объектов и видеть, содержит ли .ToString() это свойство определенное ключевое слово, которое ищется.

Могу ли я использовать LINQ для достижения этой цели, илия должен использовать отражение и петли?Цель состоит в том, чтобы иметь возможность сказать что-то вроде «Найти меня все объекты в этом графе объектов, где одно (или более) из его свойств содержит подстроку test».

Ответы [ 2 ]

4 голосов
/ 02 июля 2010

LINQ не является подходящим инструментом для этого - это должно быть невозможно со встроенными операциями запросов без интенсивного использования отражения в запросах.

Конечно, вы можете пройти по графу объектов, используя отражение, но этоне будет быстрым решением, и вам, возможно, придется учитывать некоторые неприятные вещи, такие как циклы в графе объектов.

Если классы, составляющие граф объектов, находятся под вашим контролем, я настоятельно рекомендую встроить эту функциональность вклассы.Например, вы можете создать интерфейс и реализовать его для всех классов.Затем вы можете рекурсивно анализировать граф объектов, не полагаясь на отражение.

0 голосов
/ 02 июля 2010

Если я правильно понимаю, вы пытаетесь использовать LINQ для выравнивания древовидной структуры. Для этого я использовал Generate из MoreLinq . Но мне пришлось создать свой собственный Generate на тот случай, если у объекта может быть более 1 ребенка. Ответьте в комментариях, если хотите увидеть мою реализацию и пример кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...