zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    一, 认识一下Python
    VUE
    排序算法6---归并排序算法
    排序算法5---堆排序算法,改进的简单选择排序
    排序算法4---希尔排序算法,改进的直接插入排序
    排序算法3---直接插入排序算法
    排序算法2---简单选择排序
    排序算法1---冒泡排序及其改进版
    10.17写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为: int strcmp(char * p1,char * p2) 设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当s1≠s2时,返回它们两者的第一个不同字符的ASCII码差值(如”BOY”与”BAD”,第二个字母不同,”O”与”A”之差为79-65=14);如果s1>s2,则输出正值;
    10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中。例如123放在num[0]中,456放在num[1]中……统计共有多少个整数,并输出这些数。
  • 原文地址:https://www.cnblogs.com/jake-ge/p/6676708.html
Copyright © 2011-2022 走看看