2010-07-01 18 views
2

我有一個存儲在可變深度的大對象圖中的調查,具體取決於用戶選擇創建多少個節和子節。我需要能夠搜索對象圖中每個對象的所有屬性,並查看該屬性的.ToString()是否包含正在搜索的某個關鍵字。使用LINQ在對象圖中的所有屬性中查找關鍵字

我可以使用LINQ來完成這個任務嗎?還是我必須使用反射和循環?目標是能夠說出類似於「在此對象圖中查找其中一個(或多個)屬性包含子字符串test」的所有對象。

回答

4

LINQ並不是這樣的正確工具 - 這對於內置查詢操作來說是不可能的,而不會在查詢中大量使用反射。

您可以使用反射的過程中遍歷對象圖,但是這不會是一個快速的解決方案,你可能必須考慮到像在對象圖中的循環一些難聽的話。

如果組成對象圖的類在你的控制之下,我強烈建議將這個功能構建到類中。例如,你可以創建一個接口並在所有類上實現。然後,您可以遞歸分析對象圖而不依賴反射。

+0

謝謝,這就是我一直在想這樣做,但我想,以確保這是不可能的LINQ第一。 – 2010-07-02 03:42:43

0

如果我理解正確,您正在嘗試使用LINQ來展平樹結構。爲此,我使用來自MoreLinq。但是如果對象可以有一個以上的孩子,我必須創建自己的Generate。如果您想查看我的實施和示例代碼,請在評論中回覆。

相關問題