• 7、步步为营VS 2008 + .NET 3.5(7) LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count、LongCount、Sum、Min、Max、Average、Aggregate、Cast、DefaultIfEmpty、SequenceEqual、OfType、ToArray、ToList、ToDictionary


    [索引页]
    [源码下载]


    步步为营VS 2008 + .NET 3.5(7) - LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count、LongCount、Sum、Min、Max、Average、Aggregate、Cast、DefaultIfEmpty、SequenceEqual、OfType、ToArray、ToList、ToDictionary


    作者:webabcd


    介绍
        ·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


    OK
    [源码下载]
  • 相关阅读:
    learnyou 相关网站
    hdu 3038 How Many Answers Are Wrong
    hdu 3047 Zjnu Stadium 并查集高级应用
    poj 1703 Find them, Catch them
    poj 1182 食物链 (带关系的并查集)
    hdu 1233 还是畅通工程
    hdu 1325 Is It A Tree?
    hdu 1856 More is better
    hdu 1272 小希的迷宫
    POJ – 2524 Ubiquitous Religions
  • 原文地址:https://www.cnblogs.com/dajiang02/p/1359914.html
Copyright © 2020-2023  润新知