【发布时间】:2009-10-21 02:56:09
【问题描述】:
我还是 LINQ 的新手,我已经与一个查询搏斗了好几天,准备屈服于对这个问题的无知。
我需要: 加入 3 个表(总共 2 个数据库)。让我们打电话给他们 表格1 表2 表3
Table1 在 "org" 上连接到 Table2
结果在“emplid”上加入 Table3
过滤器(在哪里):
Table3.success = true
Table3.appcode = "neo"
Table1.empl_rcd = 0
start_date(我可以作为变量传入的日期)
end_date(我可以作为变量传入的日期)
分组:(我认为分组是你会怎么做的?)
从连接表中只能为每个“emplid”分组选择最早(最远过去)的“stamp”日期字段(“stamp”最初在 Table3 上,“emplid”最初在 Table3 和 Table1 上)
从联合表中只能为每个“emplid”分组选择最新(最近的)“effdt”日期字段(“effdt”最初在 Table1 上,“emplid”最初在 Table3 和 Table1 上)
选择:
我需要从前面的逻辑中选择所有返回的行。我可以弄清楚如何过滤我需要的最终行。
这是我要执行的最后一件事,它可能会让您了解我在做什么:
query = (From j In db.table1s _
Join a In db.table3s _
On j.EMPLID Equals a.emplid _
Join d In db.table2s _
On d.ORG Equals j.Org _
Where a.appcode = "neo" _
Where a.success = True _
Select a.appcode, j.effdt, a.stamp, j.EMPLID, _
d.ORGANIZATION_DESCRIPTION, d.DEPARTMENT_DESCRIPTION, d.VP_DESCRIPTION, _
a.success _
Distinct).AsQueryable().AsEnumerable()
如果你能让我走到这一步,我会给你荣誉。但如果你也能做下一件事,在我给予信任之前,我会给予你信任。
然后在该结果中,我需要为每个“org”返回唯一“emplid”的计数。所以最终的结果是这样的:
org | count | (other columns)
------------------------------------------------
12345 | 15 | etc...
54321 | 7 | etc...
感谢你帮助一个菜鸟。
【问题讨论】:
标签: vb.net linq linq-to-sql