寫在前面
系列文章
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”是指直接對任意 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