Linq - 从不相关的表中获取计数

时间:2018-06-01 21:01:02

标签: c# linq

如何执行select count(*) from UnrelatedTable where documentLink_Id = x.documentLink_id并将结果计数添加到totalTimeAccessed。两个表格(PublishedContentUnrelatedTable都有documentLink_id)。然后我想只选择计数大于0的行

        var dbData = publishedontext.PublishedContent
                    .Where(x => x.Status > PublishedStatus.Released)
                        .OrderBy(x => x.Title)
                    .Select(x => new DownloadsPerContetnItemReportRows()
                    {
                        title  = x.Title,
                        documentLink_Id = x.DocumentLink_Id,
                        statustatus = x.Status,
                        totalTimeAccessed = "Select count from an unrelated table"
                     }

1 个答案:

答案 0 :(得分:1)

  

以下代码应有效:

totalTimeAccessed = PublishedContent
                    .Join(UnrelatedTable,pc => pc.DocumentLink_Id,
urt => urt.DocumentLink_Id,(pc,urt) => new {pc,urt})
                    .Where(y => pc.Count > 0 && urt.Count > 0)
  

工作原理

  • 在DocumentLink_Id
  • 上与PublishedContent加入UnrelatedTable
  • 检查结果,检查Count > 0PublishedContent投影的UnrelatedTable是否

根据您的具体要求,您只需要进行一些修改。如果Count引用的行数不是投影列,那么Join无论如何会给出匹配的行,那么我们就不需要Where子句