寫在前面
系列文章
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