2013-01-14 61 views
0

我需要過濾的分級列表,如:的EntityFramework/LINQ:過濾的分級列表

  • 文件夾1
  • 文件夾2
    • 文獻1
    • 文獻2
    • 文件夾4
      • 文件3
      • 文獻4
  • 文件夾3
    • 文獻

每個文件夾有文件夾和/或文件。每個文檔都有一個Status枚舉。 如何獲取所有空文件夾或文檔中狀態爲「已刪除」的文檔?

var folders = from f in context.Folders 
       // where f.Documents.All(d => d.Status == DocumentStatus.Deleted) 
       select f; 

啓用延遲加載。

回答

1

如何:

Folders.Where(folder => folder.Documents.Any(document => document.Status == DocumentStatus.Deleted)); 

不幸的是你有一個更復雜的結構,上面的LINQ語句將只工作的文件夾有單據,而不是其他文件夾。

要做你想做的事情,你將不得不手動定義一個謂詞並過濾它,因爲如果一個文件夾中有子文件夾本身,你必須遞歸調用過濾器方法來查看條件是真的。

+0

我將手動定義一個謂詞,因爲它是一個複雜的結構。 – passwortsicherheit