目录
写在前面
上篇文章介绍了linq的延迟加载特性的相关内容,从这篇文章开始将陆续介绍linq to Objects,linq to xml,linq to sql等内容。
系列文章
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