linq-to-sql – LINQ Left Join And Right Join
发布时间:2020-12-12 16:10:25 所属栏目:MsSql教程 来源:网络整理
导读:我需要一个帮助, 我有两个dataTable称为A和B,我需要所有行从A和匹配行的B 例如: A: B:User | age| Data ID | age|Growth 1 |2 |43.5 1 |2 |46.52 |3 |44.5 1 |5 |49.53 |4 |45.6 1 |6 |48.5 我需要Out Put: User | age| Data |Growth----------------------
我需要一个帮助, 我有两个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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |