Linq之Linq to Objects

目录

写在前面

系列文章

linq to objects

总结

写在前面

上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml,linq to sql等内容。

系列文章

Linq之Lambda表达式初步认识

Linq之Lambda进阶

Linq之隐式类型、自动属性、初始化器、匿名类

Linq之扩展方法

Linq之Expression初见

Linq之Expression进阶

Linq之Expression高级篇(常用表达式类型)

Linq之常见关键字

Linq之延迟加载特性

linq to objects

术语“LINQ to Objects”是指直接对任意 IEnumerable 或 IEnumerable<T> 集合使用 LINQ 查询,无需使用中间 LINQ 提供程序或 API,例如 LINQ to SQL [LINQ to SQL] 或 LINQ to XML。 可以使用 LINQ 来查询任何可枚举的集合,例如 List<T>、Array 或 Dictionary<TKey, TValue>。 该集合可以是用户定义的集合,也可以是由 .NET Framework API 返回的集合。

从根本上说,“LINQ to Objects”表示一种新的处理集合的方法。 采用旧方法,你必须编写指定如何从集合检索数据的复杂的 foreach 循环。 而采用 LINQ 方法,你只需编写描述要检索的内容的声明性代码。

另外,与传统的 foreach 循环相比,LINQ 查询具有三大优势:

1.它们更简明、更易读,尤其在筛选多个条件时。

2.它们使用最少的应用程序代码提供强大的筛选、排序和分组功能。

3.无需修改或只需做很小的修改即可将它们移植到其他数据源。

                                         -----MSDN

在前面文章中,使用linq查询ArrayList。

另外,linq在字符串,反射,文件目录操作中作为查询也是非常方便的。下面看一个例子,查询某个目录下所有扩展名为“.rar”的文件。

 1 using System.IO;
 2 using System.Linq;
 3 namespace Wolfy.Linq2ObjectsDemo
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             var fileNames = from n in GetFileNames(@"F:\", ".rar")
10                             select Path.GetFileName(n);
11             foreach (var item in fileNames)
12             {
13                 Console.WriteLine(item);
14             }
15             Console.Read();
16         }
17         /// <summary>
18         /// 获得文件名路径
19         /// </summary>
20         /// <param name="strPath"></param>
21         /// <param name="strExtention"></param>
22         static IEnumerable<string> GetFileNames(string strPath, string strExtention)
23         {
24             DirectoryInfo dir = new DirectoryInfo(strPath);
25             IEnumerable<System.IO.FileInfo> files = dir.GetFiles("*.*", SearchOption.AllDirectories);
26             //linq查询
27             var result = from file in files
28                          where file.Extension == strExtention
29                          select file.FullName;
30             return result;
31         }
32     }
33 }

输出

总结

linq to objects内容比较简单,也许你在项目中一直在用,就不再多说了。如果想了解更多,可以查看下面的参考中的内容。

参考

https://msdn.microsoft.com/zh-cn/library/cc981895.aspx

https://msdn.microsoft.com/zh-cn/library/bb546159.aspx

https://msdn.microsoft.com/zh-cn/library/bb397937.aspx

posted @ 2015-02-05 20:33  wolfy  阅读(1442)  评论(6编辑  收藏  举报