·Distinct - 過濾集合中的相同項;延遲
·Union - 連接不同集合,自動過濾相同項;延遲
·Concat - 連接不同集合,不會自動過濾相同項;延遲
·Intersect - 獲取不同集合的相同項(交集);延遲
·Except - 從某集合中刪除其與另一個集合中相同的項;延遲
·Skip - 跳過集合的前n個元素;延遲
·Take - 獲取集合的前n個元素;延遲
·SkipWhile - 直到某一條件成立就停止跳過;延遲
·TakeWhile - 直到某一條件成立就停止獲取;延遲
·Single - 根據表達式返回集合中的某一元素;不延遲
·SingleOrDefault - 根據表達式返回集合中的某一元素(如果沒有則返回默認值);不延遲
·Reverse - 對集合反向排序;延遲
·SelectMany - Select選擇(一對多);延遲
示例
Summary2.aspx.cs
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- using System.Linq;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Xml.Linq;
- using System.Collections.Generic;
- using DAL;
- public partial class LINQ_Summary2 : System.Web.UI.Page
- {
- NorthwindDataContext _ctx = new NorthwindDataContext();
- string[] _ary = null;
- protected void Page_Load(object sender, EventArgs e)
- {
- _ary = new string[] { "asp.net", "csharp", "xhtml", "css", "javascript", "wcf", "wpf",
- "asp.net", "csharp", "xhtml", "css", "javascript",
- "silverlight", "linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs" };
- // Distinct - 過濾集合中的相同項;延遲
- Summary_Distinct();
- // Union - 連接不同集合,自動過濾相同項;延遲
- Summary_Union();
- // Concat - 連接不同集合,不會自動過濾相同項;延遲
- Summary_Concat();
- // Intersect - 獲取不同集合的相同項(交集);延遲
- Summary_Intersect();
- // Except - 從某集合中刪除其與另一個集合中相同的項;延遲
- Summary_Except();
- // Skip - 跳過集合的前n個元素;延遲
- // Take - 獲取集合的前n個元素;延遲
- Summary_Skip_Take();
- // SkipWhile - 直到某一條件成立就停止跳過;延遲
- // TakeWhile - 直到某一條件成立就停止獲取;延遲
- Summary_SkipWhile_TakeWhile();
- // Single - 根據表達式返回集合中的某一元素;不延遲
- // SingleOrDefault - 根據表達式返回集合中的某一元素(如果沒有則返回默認值);不延遲
- Summary_Single_SingleOrDefault();
- // Reverse - 對集合反向排序;延遲
- Summary_Reverse();
- // SelectMany - Select選擇(一對多);延遲
- Summary_SelectMany();
- }
- }
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Collections.Generic;
using DAL;
public partial class LINQ_Summary2 : System.Web.UI.Page
{
NorthwindDataContext _ctx = new NorthwindDataContext();
string[] _ary = null;
protected void Page_Load(object sender, EventArgs e)
{
_ary = new string[] { "asp.net", "csharp", "xhtml", "css", "javascript", "wcf", "wpf",
"asp.net", "csharp", "xhtml", "css", "javascript",
"silverlight", "linq", "wf", "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs" };
// Distinct - 過濾集合中的相同項;延遲
Summary_Distinct();
// Union - 連接不同集合,自動過濾相同項;延遲
Summary_Union();
// Concat - 連接不同集合,不會自動過濾相同項;延遲
Summary_Concat();
// Intersect - 獲取不同集合的相同項(交集);延遲
Summary_Intersect();
// Except - 從某集合中刪除其與另一個集合中相同的項;延遲
Summary_Except();
// Skip - 跳過集合的前n個元素;延遲
// Take - 獲取集合的前n個元素;延遲
Summary_Skip_Take();
// SkipWhile - 直到某一條件成立就停止跳過;延遲
// TakeWhile - 直到某一條件成立就停止獲取;延遲
Summary_SkipWhile_TakeWhile();
// Single - 根據表達式返回集合中的某一元素;不延遲
// SingleOrDefault - 根據表達式返回集合中的某一元素(如果沒有則返回默認值);不延遲
Summary_Single_SingleOrDefault();
// Reverse - 對集合反向排序;延遲
Summary_Reverse();
// SelectMany - Select選擇(一對多);延遲
Summary_SelectMany();
}
}
Distinct - 過濾集合中的相同項;延遲
- /// <summary>
- /// Distinct - 過濾集合中的相同項;延遲
- /// </summary>
- void Summary_Distinct()
- {
- var ary = (from a in _ary
- select a).Distinct();
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/// <summary>
/// Distinct - 過濾集合中的相同項;延遲
/// </summary>
void Summary_Distinct()
{
var ary = (from a in _ary
select a).Distinct();
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
asp.net
csharp
xhtml
css
javascript
wcf
wpf
silverlight
linq
wf
sqlserver
asp.net ajax
ssis
ssas
ssrs
Union - 連接不同集合,自動過濾相同項;延遲
- /**//// <summary>
- /// Union - 連接不同集合,自動過濾相同項;延遲
- /// </summary>
- void Summary_Union()
- {
- var ary = (from a in _ary
- select a).Take(3).Union((from a in _ary
- select a).Take(6));
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// Union - 連接不同集合,自動過濾相同項;延遲
/// </summary>
void Summary_Union()
{
var ary = (from a in _ary
select a).Take(3).Union((from a in _ary
select a).Take(6));
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
asp.net
csharp
xhtml
css
javascript
wcf
Concat - 連接不同集合,不會自動過濾相同項;延遲
- /**//// <summary>
- /// Concat - 連接不同集合,不會自動過濾相同項;延遲
- /// </summary>
- void Summary_Concat()
- {
- var ary = (from a in _ary
- select a).Take(3).Concat((from a in _ary
- select a).Take(6));
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// Concat - 連接不同集合,不會自動過濾相同項;延遲
/// </summary>
void Summary_Concat()
{
var ary = (from a in _ary
select a).Take(3).Concat((from a in _ary
select a).Take(6));
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
asp.net
csharp
xhtml
asp.net
csharp
xhtml
css
javascript
wcf
Intersect - 獲取不同集合的相同項(交集);延遲
- /**//// <summary>
- /// Intersect - 獲取不同集合的相同項(交集);延遲
- /// </summary>
- void Summary_Intersect()
- {
- var ary = (from a in _ary
- select a).Take(3).Intersect((from a in _ary
- select a).Skip(1).Take(3));
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// Intersect - 獲取不同集合的相同項(交集);延遲
/// </summary>
void Summary_Intersect()
{
var ary = (from a in _ary
select a).Take(3).Intersect((from a in _ary
select a).Skip(1).Take(3));
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
csharp
xhtml
Except - 從某集合中刪除其與另一個集合中相同的項;延遲
- /**//// <summary>
- /// Except - 從某集合中刪除其與另一個集合中相同的項;延遲
- /// </summary>
- void Summary_Except()
- {
- var ary = (from a in _ary
- select a).Take(3).Except((from a in _ary
- select a).Skip(1).Take(3));
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// Except - 從某集合中刪除其與另一個集合中相同的項;延遲
/// </summary>
void Summary_Except()
{
var ary = (from a in _ary
select a).Take(3).Except((from a in _ary
select a).Skip(1).Take(3));
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
asp.net
Skip - 跳過集合的前n個元素;延遲
Take - 獲取集合的前n個元素;延遲
- /**//// <summary>
- /// Skip - 跳過集合的前n個元素;延遲
- /// Take - 獲取集合的前n個元素;延遲
- /// </summary>
- void Summary_Skip_Take()
- {
- var ary = (from a in _ary
- select a).Skip(2).Take(3);
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// Skip - 跳過集合的前n個元素;延遲
/// Take - 獲取集合的前n個元素;延遲
/// </summary>
void Summary_Skip_Take()
{
var ary = (from a in _ary
select a).Skip(2).Take(3);
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
xhtml
css
javascript
SkipWhile - 直到某一條件成立就停止跳過;延遲
TakeWhile - 直到某一條件成立就停止獲取;延遲
- /**//// <summary>
- /// SkipWhile - 直到某一條件成立就停止跳過;延遲
- /// TakeWhile - 直到某一條件成立就停止獲取;延遲
- /// </summary>
- void Summary_SkipWhile_TakeWhile()
- {
- var ary = (from a in _ary
- select a).SkipWhile(s => s.Length < 8).TakeWhile(s => s.Length > 2);
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// SkipWhile - 直到某一條件成立就停止跳過;延遲
/// TakeWhile - 直到某一條件成立就停止獲取;延遲
/// </summary>
void Summary_SkipWhile_TakeWhile()
{
var ary = (from a in _ary
select a).SkipWhile(s => s.Length < 8).TakeWhile(s => s.Length > 2);
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
javascript
wcf
wpf
asp.net
csharp
xhtml
css
javascript
silverlight
linq
Single - 根據表達式返回集合中的某一元素;不延遲
SingleOrDefault - 根據表達式返回集合中的某一元素(如果沒有則返回默認值);不延遲
- /**//// <summary>
- /// Single - 根據表達式返回集合中的某一元素;不延遲
- /// SingleOrDefault - 根據表達式返回集合中的某一元素(如果沒有則返回默認值);不延遲
- /// </summary>
- void Summary_Single_SingleOrDefault()
- {
- string s = (from a in _ary
- select a).Single(a => a == "silverlight");
- // string s = (from a in _ary
- // select a).SingleOrDefault(a => a == "xxx");
- // s == null
- result.InnerHtml += s + "<br />";
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// Single - 根據表達式返回集合中的某一元素;不延遲
/// SingleOrDefault - 根據表達式返回集合中的某一元素(如果沒有則返回默認值);不延遲
/// </summary>
void Summary_Single_SingleOrDefault()
{
string s = (from a in _ary
select a).Single(a => a == "silverlight");
// string s = (from a in _ary
// select a).SingleOrDefault(a => a == "xxx");
// s == null
result.InnerHtml += s + "<br />";
result.InnerHtml += "<br />";
}
運行結果
silverlight
Reverse - 對集合反向排序;延遲
- /**//// <summary>
- /// Reverse - 對集合反向排序;延遲
- /// </summary>
- void Summary_Reverse()
- {
- var ary = (from a in _ary
- orderby a.Length ascending
- select a).Reverse();
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// Reverse - 對集合反向排序;延遲
/// </summary>
void Summary_Reverse()
{
var ary = (from a in _ary
orderby a.Length ascending
select a).Reverse();
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
asp.net ajax
silverlight
javascript
javascript
sqlserver
asp.net
asp.net
csharp
csharp
xhtml
xhtml
ssrs
ssas
ssis
linq
css
wpf
wcf
css
wf
SelectMany - Select選擇(一對多);延遲
- /**//// <summary>
- /// SelectMany - Select選擇(一對多);延遲
- /// </summary>
- void Summary_SelectMany()
- {
- var ary = (from a in _ary
- where a.Contains(".")
- select a).SelectMany(a => a.Split('.'));
- foreach (string s in ary)
- {
- result.InnerHtml += s + "<br />";
- }
- result.InnerHtml += "<br />";
- }
/**//// <summary>
/// SelectMany - Select選擇(一對多);延遲
/// </summary>
void Summary_SelectMany()
{
var ary = (from a in _ary
where a.Contains(".")
select a).SelectMany(a => a.Split('.'));
foreach (string s in ary)
{
result.InnerHtml += s + "<br />";
}
result.InnerHtml += "<br />";
}
運行結果
asp
net
asp
net
asp
net ajax