当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > LINQ学习笔记:Set操作符

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

ASP.NET 中的 LINQ学习笔记:Set操作符


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 105 ::
收藏到网摘: n/a

Set操作符

主要方法:

Contact: 返回两个序列中所有元素的串联, SQL对应语法为UNION ALL

Union: 返回两个序列中所有元素的串联, 但排除重复元素, SQL对应语法为UNION

Intersect: 返回在两个序列中都存在的元素列表, SQL对应语法为WHERE…IN

Except: 返回在第一个序列中同时又不在第二个序列中的元素列表, SQL对应语法为EXCEPT或者WHERE…NOT IN…

Contact与Union

Contact返回的是第一个序列和第二个序列的所有元素, Union类似, 但是去掉了那些重复的元素:

 1: int[] seq1 = { 1, 2, 3 }, seq2 = { 3, 4,5 };
 2:  
 3: IEnumerable<int>
 4:  
 5: concat = seq1.Concat (seq2), // { 1, 2,3, 3, 4, 5 }
 6:  
 7: union = seq1.Union (seq2); // { 1, 2, 3,4, 5 }

Intersect和Except

Intersect返回的是两个序列共有的元素, Except则返回只在第一个序列中存在而不在第二个序列中的元素:

 1: int[] seq1 = { 1, 2, 3 }, seq2 = { 3, 4,5 };
 2:  
 3: IEnumerable<int>
 4:  
 5: commonality = seq1.Intersect (seq2), // { 3 }
 6:  
 7: difference1 = seq1.Except (seq2), // {1, 2 }
 8:  
 9: difference2 = seq2.Except (seq1); // {4, 5 }

Enumerable.Except内部是将序列1的所有的元素加载到一个Dictionary当中,同时移除那些存在于第二个序列中的元素. 其SQL对应物为NOT EXISTS或NOT IN子查询.

 1: SELECT number FROM numbers1Table
 2:  
 3: HERE number NOT IN (SELECT number FROM numbers2Table)

待续!