2011-04-15 98 views
0

我有一些我需要加入的表。表x,b,c正常加入,我将称之为J1。 表x,d是我称为J2的另一个正常连接。复杂的LINQ SelectMany

现在我需要将J1和J2连接在一起。对于J1中的每一行,J2中可能有多个相关的行。表x有一个日期字段和其他条件(它们很容易设置并且在组连接中),但是我需要获得最新的/最高的J2行。表x有一个日期字段,基本上对于J1中的每一行,我可以在J2中有多行,并且我需要获取最近的一行。

我有适合J1的连接。 J2的连接也已到位,作为J1上GroupJoin的第一个元素。

在哪里,我完全失去了两个问题:

  • 在一个点上,我需要按日期过滤掉。 J1 * x x条目必须晚于J1的 (可能会有更旧的条目)。

  • 选择许多需要采取最新的,这将牵连一些排序,但我没有成功添加排序。我在哪里放?我有GroupJoin,随后是SelectMany。我在哪里放入OrderBy?

注意我需要lambda语法;我不能将它改写成另一种形式。

帮助理解

+1

请修复您的问题中的拼写错误。 – 2011-04-15 07:23:42

+0

你的问题目前还不清楚,主要是因为它相当抽象。如果你能给出一个你想要做的具体例子,那真的会有所帮助。另外,如果第一次连接是无关紧要的,那么从等式中删除它是值得的。 – 2011-04-15 07:29:57

+0

我知道。这是相当突出的。可悲的是,查询本身现在跨越了两页。内赫和外连接之间的特赫有大约十几个固定条件。这不是无关紧要的,btw ...基本上,J1有数据,J2有一些额外的数据可以在J1中的每个项目中使用,如果有的话,我们需要最新的最新版本。 – TomTom 2011-04-15 08:00:45

回答

0

条件:

1)J1(单线)(X,B,C)= J2(多线)(X,d)

2) J2.x已的DateField超过J1.x订购

3)J2.x条目必须是后来

4)J2.x滤除按日期

如果其正确

+0

你如何加入j1和j2? – 2011-04-15 07:42:42

+0

非常。 J1有数据,J2可能有额外的数据,并且可能有多个项目,这是我需要的时候* J2中的数据更多,最多的则是多个。 – TomTom 2011-04-15 08:01:53