对于集合中的扩展方法Select和Where的练习

来源:互联网 发布:关系数据库种类 编辑:程序博客网 时间:2024/06/05 02:56

代码:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Lamda_Test{    class Program    {        static void Main(string[] args)        {            string[] intArray = new string[] { "test1", "test2", "test3", "test4", "test5", "test6", "test6", "test8" };            Console.WriteLine("-->初始化数组中元素个数为:{0}\n", intArray.Length);            var values1 = intArray.Where(model => model.EndsWith("4")).Select((model) =>            {                if (model.Contains("e"))                    return model;                return String.Empty;            });            Console.WriteLine("-->[Where和Select]组合执行后-->返回的集合中的元素数为 {0}:\n", values1.Count());            foreach (var str in values1)            {                Console.WriteLine("-->[Where和Select]组合执行后-->获取到的结果字符串:" + str);            }            Console.WriteLine("\n----------=========华丽的分割线=========----------\n");            var values2 = intArray.Select(model => model.EndsWith("2") ? model : "不是以“2”结束");            Console.WriteLine("-->单独的[Select]执行后-->返回的集合中的元素数为 {0}:\n", values2.Count());            foreach (var str in values2)            {                Console.WriteLine("-->单独的[Select]执行后-->获取到的测试结果:" + str);            }            Console.ReadKey();        }    }}


 

执行结果截图:

Where 返回的是一个符合匹配的结合(经过过滤的),

Select 返回的也是经过匹配的集合,不过原始集合有多少元素,返回的集合就有多少元素,当然返回的集合的类型是自己定义的

 

为什么呢?从MSDN上没找到说明,我也只能去猜了

 

下面接了几个VS的智能提示:

 

不太清楚哈

说明Where的返回值只能是boolen

Select返回的可以使自己指定的类型。

原创粉丝点击