【问题标题】:How to get the correct data with a linq statement如何使用 linq 语句获取正确的数据
【发布时间】:2013-04-10 20:15:59
【问题描述】:

问题是从原始帖子演变而来的,因此为了扩大结果,我添加了一个单独的问题。

最初的任务得到了回答,但在这样做的过程中,我遇到了一个困扰我的新问题。 在此处查看原始帖子:LINQ beginner, table joining query for document version

这是一个文档修订系统。我们正在使用两个表。一旦用户创建了新文档,信息就会添加到Document 表中。此时,文档表有一个设置为 0 的修订版和一个设置为空的 dateApproved。主键是 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 表中已编辑项目的信息)。

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

【问题讨论】:

    标签: c# linq linq-to-objects


    【解决方案1】:

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

    查看this回答如何使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 2014-12-13
      • 2020-09-04
      • 2022-06-13
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多