如何使用linq语句获取正确的数据

时间:2013-04-10 20:16:00

标签: c# linq linq-to-objects

这个问题是从最初的帖子发展而来的,所以为了扩大结果,我添加了一个单独的问题。

最初的任务得到了解答,但是这样做我遇到了一个让我难过的新问题。 在此处查看原始帖子: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表中的信息来处理已编辑的项目。)

有没有办法为已编辑的文档返回Version表信息,它已经正确返回了全新文档的信息。

1 个答案:

答案 0 :(得分:1)

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

检查this如何使用它。