重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了LINQ有哪些强大功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、濉溪网络推广、小程序开发、濉溪网络营销、濉溪企业策划、濉溪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供濉溪建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
LINQ,即Language Integrated Query。很多人熟悉SQL语言,用它来操作数据库非常方便。现在在C#3.0中也可以使用相同的语法来操作各种数据,包括数组,文件,数据库等。由于LINQ的东西比较多,本文主要介绍LINQ。
下面看一个例子,程序员就应该拿代码说话:
class Program ...{ static void Main(string[] args) ...{ string[] names=...{"Everett", "Albert", "George", "Harris", "David" }; var items=from name in names where name.Length>=6 orderby name select name.ToUpper(); foreach(var item in items) Console.WriteLine(item); } }
是不是对上面的from,where,orderby等单词很熟悉,我们可以很轻松的像查询数据库一样查询某些数组。其实上述表达式等价于下面这样的写法:
var items=names.Where(name=>name.Length>=6).
OrderBy(name=>name).Select(name=>name.ToUpper());
那么我们为什么能在数组上应用这些方法呢,本来数组上没有这些方法啊?回忆一下我们原来说过的内容,扩展方法,对,我们在这里看到扩展方法的用武之地了。而且我们也看到了Lambda表达式的应用使得语句更加简洁,易懂。这些扩展方法定义在哪里呢?我们可以在System.LINQ这个程序集里面看到这样的定义:
namespace System.LINQ ...{ public static class Enumerable ...{ public static IEnumerableWhere ( this IEnumerable source, Func predicate) ...{ foreach (T item in source) if (predicate(item) } yield return item; } } }
这里我们可以清晰的看到许多this关键字,这些正是扩展方法的标志。若果我们对Lambda表达式不是很熟悉的化,上面的LINQ语句还可以进一步转化成委托的形式。
Funcfilter = delegate (string s) ...{return s.Length >=6;}; Func extract = delegate (string s) ...{return s; }; Func project = delegate (string s) ...{return s.ToUpper(); }; var items = names.Where(filter) .OrderBy(extract) .Select(project);
有一个问题,我们会注意到items前面是用var做它的类型,那么有没有提出这样的疑问,这个var到底是什么类型呢?我们仔细看一下那个System.LINQ程序集,就会发现扩转方法返回的是IEnumerable
感谢你能够认真阅读完这篇文章,希望小编分享的“LINQ有哪些强大功能”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!