我需要过滤分层列表,如:
每个文件夹都有文件夹和/或文档。每个文档都有一个Status
枚举。
如何获取所有空文件夹或文档中状态为“已删除”的文档?
var folders = from f in context.Folders
// where f.Documents.All( d => d.Status == DocumentStatus.Deleted )
select f;
启用了延迟加载。
答案 0 :(得分:1)
这个怎么样:
Folders.Where(folder => folder.Documents.Any(document => document.Status == DocumentStatus.Deleted));
不幸的是你有一个更复杂的结构,上面的linq语句只能用于文件夹而不是其他文件夹。
要执行您想要执行的操作,您必须手动定义谓词并使用它进行过滤,因为如果文件夹中有子项是文件夹本身,则必须递归调用filter方法以查看条件是的。