我需要一个帮助,
我有两个dataTable称为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
我需要Out Put:
User | age| Data |Growth ------------------------ 1 |2 |43.5 |46.5 2 |3 |44.5 | 3 |4 |45.6 |
解决方法
您提供的示例数据和输出未显示左连接.如果是左连接,您的输出将如下所示(注意我们如何为用户1获得3个结果,即用户1拥有的每个成长记录一次):
User | age| Data |Growth ------------------------ 1 |2 |43.5 |46.5 1 |2 |43.5 |49.5 1 |2 |43.5 |48.5 2 |3 |44.5 | 3 |4 |45.6 |
假设你还需要左连接;以下是您在Linq中进行左加盟的方式:
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 };
如果你想做一个正确的连接,只需将你所选择的表互换,就像这样:
var results = from growth in userGrowth join data in userData on growth.User equals data.User into joined from j in joined.DefaultIfEmpty() select new { UserData = j,UserGrowth = growth };
代码的重要部分是into语句,后跟DefaultIfEmpty.这告诉Linq,如果在另一个表中没有匹配的结果,我们希望具有默认值(即为null).
原文地址:https://www.jb51.cc/mssql/82544.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。