2013-04-10 30 views
0

从原始帖子演变而来的问题,以扩大结果我添加了一个单独的问题。如何使用linq语句获取正确的数据

原来的任务已经回答了,但是在这样做的时候,我遇到了一个让我难以接受的新问题。 在这里看到原文:LINQ beginner, table joining query for document version

这是一个文件修订系统。我们使用两个表格。只要用户创建新文档,该信息就会添加到Document表中。此时文档表的修订版本设置为0,dateApproved设置为null。主键是documentID。

现在,如果用户编辑该文档,则会在新表Version中创建一行。

这里是Linq我已经正确地返回了所有需要批准的文档(2个全新的文档,其中只有Documents表中有一行,并且有1个文档已被编辑,所以它有一行文件和Version)。

var docs = db.IPACS_Document 
       .Where(x => x.dateApproved == null 
          || x.IPACS_Version.Any(y => y.dateApproved == null)); 

以上LINQ的正确识别需要审批的所有3个文件,但是对于已经在Documents表中的一行和Version表的文档。它从Document表中返回信息(实际上,我需要从Version表中获取已编辑项目的信息)。

是否有办法返回已编辑文档的版本表信息,它已正确返回全新文档的信息。

回答

1

您需要IEnumerable.Union但它只适用于相同的元素类型。您有2种类型:VersionDocument

检查this回答如何使用它。