您的位置:首页 > 其它

两个list集合得到linq外连接的效果

2015-11-09 14:10 363 查看


两个list集合得到linq外连接的效果

网络









像这种怎么写?

你写的语句仅仅是左外连接,而你要的结果却是左外连接和右外连接的交集(以user_id为键做比较)。

当然通常我们不会这样做,因为太低效。

一个简单点的办法是先取两个list的user_id做并集运算得到所有的主键,然后依据主键进行子查询。
稍微解释下。首先我们拿到list1和list2的所有user_id,然后使用Union扩展方法做并集运算得到匿名IEnumerable<int>,里面的值是{1,2,3,4,5}。对其中每一个值id,在list1和list2上比较user_id==id得到i1和i2。根据i1和i2是否为空决定该如何select结果集。

等价的查询子句语法:
如果想利用现有的代码,我们还可以为newList补上它缺失的记录。检查一下list2中所有user_id没有在list1中出现的记录即可。
等价的查询符语法:
还有其他几种方式可以满足你的需要,这里就不过多解释了。有问题请追问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: