LINQ查詢操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count


介紹  
    ·First - 返回集合中的第一個元素;不延遲  
    ·FirstOrDefault - 返回集合中的第一個元素(如果沒有則返回默認值);不延遲  
    ·Last - 返回集合中的最后一個元素;不延遲  
    ·LastOrDefault - 返回集合中的最后一個元素(如果沒有則返回默認值)  
    ·ElementAt - 返回集合中指定索引的元素;不延遲  
    ·ElementAtOrDefault - 返回集合中指定索引的元素(如果沒有則返回默認值);不延遲  
    ·Contains - 判斷集合中是否包含有某一元素;不延遲  
    ·Any - 判斷集合中是否有元素滿足某一條件;不延遲  
    ·All - 判斷集合中是否所有元素都滿足某一條件;不延遲  
    ·Count - 返回集合中的元素個數,返回int;不延遲  
    ·LongCount - 返回集合中的元素個數,返回long;不延遲  
    ·Sum - 集合應為數字類型集合,求其和;不延遲  
    ·Min - 返回集合的最小值;不延遲  
    ·Max - 返回集合的最大值;不延遲  
    ·Average - 集合應為數字類型集合,求其平均值;不延遲  
    ·Aggregate - 根據輸入的表達式獲取一個聚合值;不延遲  
    ·Cast - 將集合轉換為強類型集合;延遲  
    ·DefaultIfEmpty - 查詢結果為空則返回默認值;延遲  
    ·SequenceEqual - 判斷兩個集合是否相同;不延遲  
    ·OfType - 過濾集合中的指定類型;延遲  
    ·ToArray - 將集合轉換為數組;不延遲  
    ·ToList - 將集合轉換為List<T>集合;不延遲  
    ·ToDictionary - 將集合轉換為<K, V>集合;不延遲  
  
  
示例  
Summary3.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_Summary3 : 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", "silverlight", "linq", "wf",   
            "sqlserver", "asp.net ajax", "ssis", "ssas", "ssrs" };  
  
        // First - 返回集合中的第一個元素;不延遲  
        // FirstOrDefault - 返回集合中的第一個元素(如果沒有則返回默認值);不延遲  
        Summary_First_FirstOrDefault();  
  
        // Last - 返回集合中的最后一個元素;不延遲  
        // LastOrDefault - 返回集合中的最后一個元素(如果沒有則返回默認值)  
        Summary_Last_LastOrDefault();  
  
        // ElementAt - 返回集合中指定索引的元素;不延遲  
        // ElementAtOrDefault - 返回集合中指定索引的元素(如果沒有則返回默認值);不延遲  
        Summary_ElementAt_ElementAtOrDefault();  
  
        // Contains - 判斷集合中是否包含有某一元素;不延遲  
        Summary_Contains();  
  
        // Any - 判斷集合中是否有元素滿足某一條件;不延遲  
        Summary_Any();  
  
        // All - 判斷集合中是否所有元素都滿足某一條件;不延遲  
        Summary_All();  
  
        // Count - 返回集合中的元素個數,返回int;不延遲  
        // LongCount - 返回集合中的元素個數,返回long;不延遲  
        Summary_Count_LongCount();  
  
        // Sum - 集合應為數字類型集合,求其和;不延遲  
        Summary_Sum();  
  
        // Min - 返回集合的最小值;不延遲  
        Summary_Min();  
  
        // Max - 返回集合的最大值;不延遲  
        Summary_Max();  
  
        // Average - 集合應為數字類型集合,求其平均值;不延遲  
        Summary_Average();  
  
        // Aggregate - 根據輸入的表達式獲取一個聚合值;不延遲  
        Summary_Aggregate();  
  
        // Cast - 將集合轉換為強類型集合;延遲  
        Summary_Cast();  
  
        // DefaultIfEmpty - 查詢結果為空則返回默認值;延遲  
        Summary_DefaultIfEmpty();  
  
        // SequenceEqual - 判斷兩個集合是否相同;不延遲  
        Summary_SequenceEqual();  
  
        // OfType - 過濾集合中的指定類型;延遲  
        Summary_OfType();  
  
        // ToArray - 將集合轉換為數組;不延遲  
        Summary_ToArray();  
  
        // ToList - 將集合轉換為List<T>集合;不延遲  
        Summary_ToList();  
  
        // ToDictionary - 將集合轉換為<K, V>集合;不延遲  
        Summary_ToDictionary();  
    }  
}  
First - 返回集合中的第一個元素;不延遲  
FirstOrDefault - 返回集合中的第一個元素(如果沒有則返回默認值);不延遲  
    /**//// <summary>  
    /// First - 返回集合中的第一個元素;不延遲  
    /// FirstOrDefault - 返回集合中的第一個元素(如果沒有則返回默認值);不延遲  
    /// </summary>  
    void Summary_First_FirstOrDefault()  
    {  
        string s = (from a in _ary  
                    select a).First(a => a.StartsWith("s"));  
        // string s = (from a in _ary  
        //             select a).FirstOrDefault(a => a.StartsWith("xxx"));  
        // s == null  
  
        result.InnerHtml += s + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
silverlight  
  
Last - 返回集合中的最后一個元素;不延遲  
LastOrDefault - 返回集合中的最后一個元素(如果沒有則返回默認值)  
    /**//// <summary>  
    /// Last - 返回集合中的最后一個元素;不延遲  
    /// LastOrDefault - 返回集合中的最后一個元素(如果沒有則返回默認值)  
    /// </summary>  
    void Summary_Last_LastOrDefault()  
    {  
        string s = (from a in _ary  
                    select a).Last(a => a.StartsWith("s"));  
        // string s = (from a in _ary  
        //             select a).LastOrDefault(a => a.StartsWith("sss"));  
        // s == null  
  
        result.InnerHtml += s + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
ssrs  
  
ElementAt - 返回集合中指定索引的元素;不延遲  
ElementAtOrDefault - 返回集合中指定索引的元素(如果沒有則返回默認值);不延遲  
    /**//// <summary>  
    /// ElementAt - 返回集合中指定索引的元素;不延遲  
    /// ElementAtOrDefault - 返回集合中指定索引的元素(如果沒有則返回默認值);不延遲  
    /// </summary>  
    void Summary_ElementAt_ElementAtOrDefault()  
    {  
        string s = (from a in _ary  
                    select a).ElementAt(3);  
        // string s = (from a in _ary  
        //             select a).ElementAtOrDefault(1000);  
        // s == null  
  
        result.InnerHtml += s + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
css  
  
Contains - 判斷集合中是否包含有某一元素;不延遲  
    /**//// <summary>  
    /// Contains - 判斷集合中是否包含有某一元素;不延遲  
    /// </summary>  
    void Summary_Contains()  
    {  
        bool b = (from a in _ary  
                  select a).Contains("javascript");  
  
        result.InnerHtml += b.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
True  
  
Any - 判斷集合中是否有元素滿足某一條件;不延遲  
    /**//// <summary>  
    /// Any - 判斷集合中是否有元素滿足某一條件;不延遲  
    /// </summary>  
    void Summary_Any()  
    {  
        bool b = (from a in _ary  
                  select a).Any(p => p.Length > 10);  
  
        result.InnerHtml += b.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
True  
  
All - 判斷集合中是否所有元素都滿足某一條件;不延遲  
    /**//// <summary>  
    /// All - 判斷集合中是否所有元素都滿足某一條件;不延遲  
    /// </summary>  
    void Summary_All()  
    {  
        bool b = (from a in _ary  
                  select a).All(p => p.Length > 10);  
  
        result.InnerHtml += b.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
False  
  
Count - 返回集合中的元素個數,返回int;不延遲  
LongCount - 返回集合中的元素個數,返回long;不延遲  
    /**//// <summary>  
    /// Count - 返回集合中的元素個數,返回int;不延遲  
    /// LongCount - 返回集合中的元素個數,返回long;不延遲  
    /// </summary>  
    void Summary_Count_LongCount()  
    {  
        int i = (from a in _ary  
                 select a).Count(p => p.Length > 10);  
        // long i = (from a in _ary  
        //           select a).LongCount(p => p.Length > 10);  
  
        result.InnerHtml += i.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
2  
  
Sum - 集合應為數字類型集合,求其和;不延遲  
    /**//// <summary>  
    /// Sum - 集合應為數字類型集合,求其和;不延遲  
    /// </summary>  
    void Summary_Sum()  
    {  
        int i = (from a in _ary  
                 select a.Length).Sum();  
  
        result.InnerHtml += i.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
87  
  
Min - 返回集合的最小值;不延遲  
    /**//// <summary>  
    /// Min - 返回集合的最小值;不延遲  
    /// </summary>  
    void Summary_Min()  
    {  
        int i = (from a in _ary  
                 select a.Length).Min();  
  
        result.InnerHtml += i.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
2  
  
Max - 返回集合的最大值;不延遲  
    /**//// <summary>  
    /// Max - 返回集合的最大值;不延遲  
    /// </summary>  
    void Summary_Max()  
    {  
        int i = (from a in _ary  
                 select a.Length).Max();  
  
        result.InnerHtml += i.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
12  
  
Average - 集合應為數字類型集合,求其平均值;不延遲  
    /**//// <summary>  
    /// Average - 集合應為數字類型集合,求其平均值;不延遲  
    /// </summary>  
    void Summary_Average()  
    {  
        double d = (from a in _ary  
                    select a.Length).Average();  
  
        result.InnerHtml += d.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
5.8  
  
Aggregate - 根據輸入的表達式獲取一個聚合值;不延遲  
    /**//// <summary>  
    /// Aggregate - 根據輸入的表達式獲取一個聚合值;不延遲  
    /// </summary>  
    void Summary_Aggregate()  
    {  
        // 以下算法的Aggregate相當於Sum  
        double d = (from a in _ary  
                    select a.Length).Aggregate((x, y) => x + y);  
  
        result.InnerHtml += d.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
87  
  
Cast - 將集合轉換為強類型集合;延遲  
    /**//// <summary>  
    /// Cast - 將集合轉換為強類型集合;延遲  
    /// </summary>  
    void Summary_Cast()  
    {  
        ArrayList al = new ArrayList();  
        al.Add("asp.net");  
        al.Add("csharp");  
        al.Add("xhtml");  
  
        var list = al.Cast<string>();  
  
        foreach (string s in list)  
        {  
            result.InnerHtml += s + "<br />";  
        }  
        result.InnerHtml += "<br />";  
    }運行結果  
asp.net  
csharp  
xhtml  
  
DefaultIfEmpty - 查詢結果為空則返回默認值;延遲  
    /**//// <summary>  
    /// DefaultIfEmpty - 查詢結果為空則返回默認值;延遲  
    /// </summary>  
    void Summary_DefaultIfEmpty()  
    {  
        var list = (from a in _ary  
                    where a.Length > 100  
                    select a).DefaultIfEmpty("xxx");  
  
        foreach (string s in list)  
        {  
            result.InnerHtml += s + "<br />";  
        }  
        result.InnerHtml += "<br />";  
    }運行結果  
xxx  
  
SequenceEqual - 判斷兩個集合是否相同;不延遲  
    /**//// <summary>  
    /// SequenceEqual - 判斷兩個集合是否相同;不延遲  
    /// </summary>  
    void Summary_SequenceEqual()  
    {  
        bool b = (from a in _ary  
                  where a.Length > 10  
                  select a).SequenceEqual(from a in _ary  
                                          where a.Length > 10  
                                          select a);  
  
        result.InnerHtml += b.ToString() + "<br />";  
        result.InnerHtml += "<br />";  
    }運行結果  
True  
  
OfType - 過濾集合中的指定類型;延遲  
    /**//// <summary>  
    /// OfType - 過濾集合中的指定類型;延遲  
    /// </summary>  
    void Summary_OfType()  
    {  
        object[] objects = { 1, "a", 2, "b", 3, "c" };  
  
        var list = objects.OfType<string>();  
  
        foreach (string s in list)  
        {  
            result.InnerHtml += s + "<br />";  
        }  
        result.InnerHtml += "<br />";  
    }運行結果  
a  
b  
c  
  
ToArray - 將集合轉換為數組;不延遲  
    /**//// <summary>  
    /// ToArray - 將集合轉換為數組;不延遲  
    /// </summary>  
    void Summary_ToArray()  
    {  
        string[] ary = (from p in _ctx.Products  
                        where p.ProductName.Length > 30  
                        select p.ProductName).ToArray();  
  
        foreach (string s in ary)  
        {  
            result.InnerHtml += s + "<br />";  
        }  
        result.InnerHtml += "<br />";  
    }運行結果  
Jack's New England Clam Chowder  
Louisiana Fiery Hot Pepper Sauce  
Original Frankfurter grüne So?e  
Uncle Bob's Organic Dried Pears  
  
ToList - 將集合轉換為List<T>集合;不延遲  
    /**//// <summary>  
    /// ToList - 將集合轉換為List<T>集合;不延遲  
    /// </summary>  
    void Summary_ToList()  
    {  
        var list = (from a in _ary  
                    where a.Length > 10  
                    select a).ToList();  
  
        foreach (string s in list)  
        {  
            result.InnerHtml += s + "<br />";  
        }  
        result.InnerHtml += "<br />";  
    }運行結果  
silverlight  
asp.net ajax  
  
ToDictionary - 將集合轉換為<K, V>集合;不延遲  
    /**//// <summary>  
    /// ToDictionary - 將集合轉換為<K, V>集合;不延遲  
    /// </summary>  
    void Summary_ToDictionary()  
    {  
        var dic = (from p in _ctx.Products  
                   where p.ProductName.Length > 30  
                   select p).ToDictionary(p => p.ProductID);  
  
        foreach (var p in dic)  
        {  
            result.InnerHtml += p.Key + "" + p.Value.ProductName + "<br />";  
        }  
        result.InnerHtml += "<br />";  
    }運行結果  
7:Uncle Bob's Organic Dried Pears  
41:Jack's New England Clam Chowder  
65:Louisiana Fiery Hot Pepper Sauce  
77:Original Frankfurter grüne So?e  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM