LINQ 和Enumerable类

public class LinqClass
    {
        public static void Test1()
        {
            int[] scores = { 90, 92, 42, 46, 37, 32, 74, 5, 16, 32 };
            IEnumerable<int> scoreQuery =
                from score in scores     //必须
                where score > 40           //可选条件
                orderby score descending //可选条件
                select score;            //必须
            foreach (int score in scoreQuery)
            {
                Console.WriteLine(score);
            }

            int hightestScore = scores.Max();

            //group 分组
            var queryGroups =
                from score in scores
                group score by score;

            //into 存储查询的内容
            //// percentileQuery is an IEnumerable<IGrouping<int, Country>>
            var percentileQuery =
                from score in scores
                group score by score into scorequery
                where scorequery.Key > 10
                select scorequery;

            //在 from 开始子句以及 select 或 group 结束子句之间,
            //所有其他子句(where、join、orderby、from、let)都是可选的。
            //任何可选子句都可以在查询正文中使用零次或多次。

            //let 子句
            //使用 let 子句可以将表达式(如方法调用)的结果存储到新的范围变量中。
            string[] names = { "a n", "b c", "c n", "d m" };
            IEnumerable<string> queryFirstNames =
                from name in names
                let firstName = name.Split(new char[] { ‘ ‘ })[0]
                select firstName;

            //对一个序列应用累加器函数。
            //Aggregate<TSource>(IEnumerable<TSource>, Func<TSource, TSource, TSource>)
            string sentence = "the quick brown fox jumps over the lazy dog";
            string[] words = sentence.Split(‘ ‘);
            string reversed = words.Aggregate((wording, next) => wording + " " + next);
            Console.WriteLine(reversed);

            //确定是否对序列中的所有元素都满足条件。
            //All<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)

            //确定序列是否包含任何元素。
            //Any<TSource>(IEnumerable<TSource>)
            List<int> numbers = new List<int> { 1, 2 };
            bool hasElements = numbers.Any();
            Console.WriteLine("The list {0} empty.",
                hasElements ? "is not" : "is");

            // 返回输入类型化为 IEnumerable<T>。
            // AsEnumerable<TSource>(IEnumerable<TSource>)

            //将强制转换的元素 IEnumerable 为指定的类型。符合规则热任意类型,与上面的区别。
            //Cast<TResult>(IEnumerable)

            //计算序列的平均值 Double 值。
            //Average(IEnumerable<Double>)

            //连接两个序列。
            //Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

            //确定序列是否包含指定的元素使用的默认相等比较器。
            //Contains<TSource>(IEnumerable<TSource>, TSource)

            //返回序列中的元素数。
            //Count<TSource>(IEnumerable<TSource>)

            //返回单一实例集合中指定的序列或类型参数的默认值的元素,如果序列为空。
            //DefaultIfEmpty<TSource>(IEnumerable<TSource>)

            //通过使用的默认相等比较器对值进行比较从序列返回非重复元素。
            //Distinct<TSource>(IEnumerable<TSource>)

            //返回序列中的指定索引处的元素。
            //ElementAt<TSource>(IEnumerable<TSource>, Int32)

            //通过使用默认的相等比较器对值进行比较,生成两个序列的差集。
            //Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)
            double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
            double[] numbers2 = { 2.2 };
            IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);
            foreach (double number in onlyInFirstSet)
                Console.WriteLine(number);

            //返回一个序列的第一个元素。
            //First<TSource>(IEnumerable<TSource>)

            //返回序列中满足指定条件的第一个元素。
            //FirstOrDefault<TSource>(IEnumerable<TSource>)

            //根据指定的键选择器函数对序列的元素进行分组。
            //GroupBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>)

            //    通过使用默认的相等比较器对值进行比较,生成两个序列的交集。
            //Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)
            int[] id1 = { 44, 26, 92, 30, 71, 38 };
            int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };
            IEnumerable<int> both = id1.Intersect(id2);
            foreach (int id in both)
                Console.WriteLine(id);

            //通过使用默认的相等比较器生成的两个序列的并集。
            //Union<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

            //返回一个序列的最后一个元素。
            //Last<TSource>(IEnumerable<TSource>)

            // 从序列的开头返回指定的数量的连续元素。
            // Take<TSource>(IEnumerable<TSource>, Int32)

            // 返回序列中的最大值 Decimal 值。
            //Max(IEnumerable<Decimal>)

            //返回序列的唯一元素;如果该序列并非恰好包含一个元素,则会引发异常。
            //Single<TSource>(IEnumerable<TSource>)

            //ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>)

            //Where<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)

            // 一个序列的每个元素投影 IEnumerable<T> 并将合并为一个序列将结果序列。
            //SelectMany<TSource, TResult>(IEnumerable<TSource>, Func<TSource, IEnumerable<TResult>>)
        }
    }
时间: 2024-12-18 14:21:56

LINQ 和Enumerable类的相关文章

通过LINQ TO SQL类显示数据库表的数据

1.数据库操作:首先在数据库创建一张简单的表SPJ 2.新建一个ASP.NET空网站 3.新建一个Web窗体,命名为ShowData.aspx 在源码界面添加两个控件:Button控件和Gridview控件 <div> <asp:Button ID="BtnShow" runat="server" Text="单击显示Gridview表" OnClick="BtnShow_Click" /> <a

winform 用linq to SQL 类实现数据库的增、删、改、查 2016年02月18日

在C#中,如果用的是SQL server的数据库,由于同是微软旗下的软件,为了方便用户操作,可以用Linq to SQL类来实现对数据库的操作,大大简化了操作. 一.添加一个Linq to SQL的类: 二.在资源管理器中的数据连接中,连接好数据库: 三.将要进行操作的表,拖入到DataClasses1.dbml的操作面板中,这样就完成了对表属性的封装 四.创建一个FruitDA的类,在里面写数据库增.删.改.查的方法,代码如下: public class FruitDA { private D

linq to sql 类的使用

本文介绍linq to sql模型类的使用 EntityFramework是重量级的数据库模型,如果你想要一个简单轻量级的数据库模型,建议使用linq to sql类 创建模型类 在项目中添加linq to sql类,会生成dbml文件,将你需要的表拖到此文件中即可 查询数据 string str = "server=localhost;database=my_db;uid=sa;pwd=123"; DataClasses1DataContext db = new DataClasse

LINQ系列:LINQ to XML类

LINQ to XML由System.Xml.Linq namespace实现,该namespace包含处理XML时用到的所有类.在使用LINQ to XML时需要添加System.Xml.Linq.dll的引用,在代码声明中添加using: using System.Xml.Linq;

LINQ to Object——延时执行的Enumerable类方法

LINQ to Object是针对实现了IEnumerable<T>的对象的LINQ.而在System.Linq.Enumerable类中,总共定义了40来个查询运算符----全部用扩展方法来实现,他们被称为标准查询运算符.每个查询运算符的执行行为不同,大致分为立即执行和延时执行.延时执行,顾名思义就是不是立即执行,即不是在查询语句定义的时候执行,而是在处理结果集(如遍历)的时候执行. 常用的延时执行的Enumerable类方法成员,具体如下: 1.Take用于从一个序列的开头返回指定数量的元

LINQ to Object——立即执行的Enumerable类方法

在前面说到LINQ to Object--延时执行的Enumerable类的方法,接下来说说LINQ to Object--立即执行的Enumerable类方法. 1.ToArray 序列转换成数组 List<string> names_list = new List<string> { "张三", "范冰冰", "李冰冰", "迈克尔·杰克逊", "李四", "王五&qu

LinQ类

1.Linq to sql 类 简称:LinQ,它就是一个集成化的数据库访问类,它会自动生成许多原本需要我们自己创建的东西: 它和ADO.NET是一样的东西,都是为了访问数据库而出现的,EF框架 一.创建LinQ类:dbml就是LinQ文件 在App_Code里,右键添加Linq to sql 类(如果没有就在添加新项中找),打开LinQ类,点击服务器资源管理器,然后点绿色加号和小插头组成的按键链接.连接上数据库,在服务器管理器上数据库名前会变成绿色,点开数据库,选择要用的表,拖到LinQ里.

LINQ to SQL 建立实体类

使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,LINQ to SQL负责将结果转换成实体类对象. 建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal生成等.其中最方便的就是LINQ to SQL设计器. 1.使用LINQ to SQL设计器建立实体类 在一个示例用的Demo控

LINQ to SQL 建立实体类 (转)

http://www.cnblogs.com/DebugLZQ/archive/2012/11/14/2770449.html 使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,LINQ to SQL负责将结果转换成实体类对象. 建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal