LINQ to Object

LINQ to Object

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

LinQ to Object是指对随意IEnumerableIenumerable<T>集合使用linq查询.它可取代查询不论什么可枚举的集合.List<T>,ArrayDictionary<K,V>. 


LINQ的长处


  和foreache相比有三个长处

  • 它们更简明、更易读,尤其在筛选多个条件时。
  • 它们使用最少的应用程序代码提供强大的筛选、排序和分组功能。
  • 无需改动或仅仅需做非常小的改动就可以将它们移植到其它数据源。

LINQ特性


对象初始化器,这个事实上我们一直在用.就如我们加入非常多的sql參数

SqlParameter[]parameters = {newSqlParameter("@QuestionID",Convert.ToInt32 (map["QuestionID"])),newSqlParameter("@ChapterID",map["ChapterID"].ToString () ),newSqlParameter("@QuestionTypeID",map["QuestionTypeID"].ToString() ),newSqlParameter("@Remark", map["Remark"].ToString () )};

以上是我们经常使用的一种数组初始化器

以下是集合初始化器.

IList<Book> books = new List<Book> {      new Book { Title = "Inside COM", ISBN = "123-456-789",Price=20 },     new Book { Title = "Inside C#", ISBN = "123-356-d89",Price=100 },     new Book { Title = "Linq", ISBN = "123-d56-d89", Price = 120 }};

上节说道LINQ的查询方式有两种,表达式和操作符,Object的操作也是这两种方式;是要明确并非全部的查询和操作符号都具有延时性.我们就開始吧

标准查询whereselect

实例数组的查询

Select[]greetings={
"hello","hello LINQ","How are you"
} 
Var items= from group in greetings where group.lenght>10 select group
//where,selectkeyword是linq to object编程接口标准查询符。grou是查询变量

对集合的查询

//定义一个序列,使用泛型接口时类型T要明白指定详细类型

String[]strArrary={"one","two","three","four","five","six","seven","eight","nine","ten"}
 
//使用标准查询操作符号where,
 
IEnumerable<String> strSquence=strArrary.Where(p=>p.StartWith("t"));
 
//便利输出满足条件的元素
 
Foreach(stringitem in items)
Consel.writeline(item);
Console.Read();

where操作符号返回一个泛型对象。也就是一个序列对象。该对象是在foreach序列化时调用where操作符运行的。这样的查询是延迟查询。

 

比如能够指定一个查询,多次理解查询结果,当被查询的数据在多次力矩之间发生变化,多次查询结果是不同的。每次都是最新的数据

 static void Main(string[] args)        {            int[] intArray = new int[] { 9, 8,7 };            //以下的查询表达式等价于代码 IEnumerable<int> ints = intArray.Select(i => i);            var ints = from i in intArray                       select i;             //第一次列举            foreach (int i in ints)                Console.WriteLine(i);             //改动元素的值            intArray[0] = 999;            intArray[1] = 888;            intArray[2] = 777;           Console.WriteLine("---------");            //第二次列举            foreach (int i in ints)                Console.WriteLine(i);            Console.Read();        } 

LINQ to Object


非延时

假设不想延迟查询,拿上运行,能够再上面的调用方法上转换,ToArrayToLIst等方法

int[] intArray = newint[] { 9, 8, 7 };            //使用ToArray方法进行转换            IEnumerable<int> ints =intArray.Select(i => i).ToArray();             foreach (int i in ints)    //第一次列举                Console.WriteLine(i);            intArray[0] = 999;   //改动元素的值            intArray[1] = 888;            intArray[2] = 777;           Console.WriteLine("---------");             foreach (int i in ints)  //第二次列举                Console.WriteLine(i);

LINQ to Object

为何是同样的,原因在于查询表达式时调用了ToArray方法,马上运行,并将查询结果保存在整数类型数组ints中。两次列举数组中的元素,输出结果同样,改动的仅仅是IntArray数组中的值,并没有影响ints数组值。非常好的一个应用吧

总结


以上述的仅仅是object的冰上一角。很多其它的object的操作方法是在对web页面数据绑定以及form窗口的数据绑定以及综合查询和排序等,以及funt<T,TResult>的应用。下篇介绍泛型托付FuncT<>的应用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118083.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux下export命令和source命令与环境变量设置「建议收藏」

    Linux下export命令和source命令与环境变量设置「建议收藏」Linux下export命令和source命令与环境变量设置环境变量广泛用于程序运行环境的设置。从Linuxshell的角度来看,环境变量无非就是shell脚本的变量而已。从这个角度理解环境变量,就能理解设置环境变量的那些命令究竟在做什么。说明:笔者的系统为debian,shell为bash,以下例子均在笔者的Linux环境下测试,不保证其他环境能够通过。export命令和source命令…

    2022年9月6日
    6
  • MBUS协议_协议解析

    MBUS协议_协议解析来自于我的163博客,一篇好好的技术文章,在163上居然提示不能显示,我2014年6月25日就翻译出来了,当时很多其他博客都是直接拷贝我的文章都能在网上发布。看了许多关于MBus协议的资料,感觉说的不具体、不完整、也不系统,本人准备结合一个具体的产品实现,从理论和实现上对MBus协议做一个详细的论述,如有不当之处,欢迎讨论。1介绍MBus(MeterB…

    2022年10月16日
    1
  • 世界一级行政区划图_世界行政区划图册

    世界一级行政区划图_世界行政区划图册序号 国家 省 城市 8168 波兰 下西里西亚省   8169 波兰 下西里西亚省 下布热格 8170 波兰 下西里西亚省 佩希采 8171 波兰 下西里西亚省 克沃兹科 8172 波兰 下西里西亚省 兹戈热莱茨 8173 波兰 下西里西亚省 兹沃托雷亚 8174 波兰 下西里西亚省 博莱斯瓦维茨 8175 波兰 下西里

    2022年9月29日
    4
  • 漫画大全更新了吗_所有的漫画台

    漫画大全更新了吗_所有的漫画台无会员,10万+本漫画,统统免费!!!最新最热门的免费漫画大全,最全最二次元的撸漫平台,超多正版高清彩漫尽在漫画大全APP!《斗罗大陆》《斗破苍穹》《凤逆天下》《妃夕妍雪》《穿越西元3000后》《纯情丫头火辣辣》《勇者是女孩》《龙族》《哑舍》《暴走邻家》等等,全部免费,喜欢的统统都到碗里来!!!欢迎下载使用 …

    2022年10月8日
    1
  • IDEA学习笔记「建议收藏」

    IDEA学习笔记「建议收藏」1、IDEA的安装、配置和使用1.1概述1.1.1JetBrains概述IDEA(https://www.jetbrains.com/idea/)JetBrains公司的产品,公司旗下还有其它产品,比如: WebStorm:用于开发JavaScript、HTML5、CSS3等前端技术; PyCharm:用于开发python PhpStorm:用于开发PHP RubyMine:用于开发Ruby/Rails AppCode:用于开发Ob

    2022年5月29日
    116
  • java高级工程师_一名Java高级工程师需要学什么?

    java高级工程师_一名Java高级工程师需要学什么?从两方面讨论一名java高级工程师需要学些什么,具备什么能力,感兴趣的小伙伴们可以参考一下宏观上:1.技术广度方面至少要精通多门开源技术吧,研究过struts\spring等的源码。2.项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研。尾是指上线交付之后,包括维护阶段。3.架构经验方面有过分布式系统的架构和开发经验。对于跨系统的结构优化,数据存储的性能指标等有丰富经验。什么缓存啊、…

    2022年7月7日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号