我有两个数据表称为A和B,我需要所有行从A和B的匹配行
A: B:
User | age| Data ID | age|Growth
1 |2 |43.5 1 |2 |46.5
2 |3 |44.5 1 |5 |49.5
3 |4 |45.6 1 |6 |48.5
输出将是
User | age| Data |Growth
------------------------
1 |2 |43.5 |46.5
2 |3 |44.5 |
3 |4 |45.6 |
在这种情况下,我从StackOverflow.com得到了一个解决方案Link
var results = from data in userData
join growth in userGrowth
on data.User equals growth.User into joined
from j in joined.DefaultIfEmpty()
select new
{
UserData = data,
UserGrowth = j
};
它工作得很好,但是我有点困惑,在这个LINQ Query
中join
和joined
的区别是什么。谢谢你。
joined
是join
或group by
操作结果的变量名。只是为了能够在from
子句中使用它。
MSDN:
into上下文关键字可用于创建临时标识符,用于将组、连接或选择子句的结果存储到其中一个新的标识符。此标识符本身可以是的生成器附加查询命令。在组或选择子句中使用时,新标识符的使用有时被称为延续。
在您的示例中,joined
标识符用于执行LEFT JOIN
。通过检查join
(存储在joined
中)的结果是否为空,那么j
将是null
,并且该记录将不会被跳过(如INNER JOIN
)。
joined只是结果集合的变量名。您可以看到它是在以into joined
结尾的行中创建的。然后在下一行使用