使用 LINQ 估算檔案大小的 C# 程式


簡介

讓我們嘗試瞭解使用 LINQ 估算檔案大小的 C# 程式。我們將瞭解 LINQ(語言整合查詢)及其方法和類,以及如何藉助它們獲得所需的輸出。

語言整合查詢,即 LINQ,用於在 C# 語言中生成查詢。以前,我們必須使用其他關係語言,如 SQL 和 XML。它為 C# 語言或任何其他 .NET 語言提供了更強大的功能。在 LINQ 中查詢資料庫使用的語法與查詢儲存在陣列中的資料相同。

在本文中,我們將全面瞭解 C# 中 LINQ 的使用如何徹底改變了它,以及它如何使使用者能夠僅使用 C# 語言輕鬆訪問資料,而無需依賴其他語言,如 SQL。

我們將首先了解 LINQ 及其一些方法,這些方法將有助於我們理解程式碼。然後我們將理解程式碼及其演算法。

語言整合查詢 (LINQ)

LINQ 是 .NET 框架的一部分,它使使用者能夠以型別安全的方式更輕鬆地檢索資料。

LINQ 最好的特性是它提供了一種單一方法來訪問來自多個數據源的資料,包括資料庫和 XML 文件。藉助 LINQ,使用者可以編寫更易於理解、更簡潔且更美觀的程式碼。它還提供其他功能,例如過濾、排序、分組資料甚至更改資料。

它位於 System 名稱空間下。

此名稱空間下通常有兩種型別的類。第一個是 Enumerable 類,它包含用於查詢 IEnumerable<T> 的標準查詢運算子。第二個也是最後一個是 Queryable 類,它包含對執行 IQueryable<T> 的物件進行操作的標準查詢運算子。

與其他資料庫語言(如 SQL)相比,考慮使用 LINQ 有很多優勢。以下列出了一些:

  • 它是一種簡單的高階語言,並且比 SQL 更有序。

  • 藉助它的幫助,我們可以訪問任何其他資料來源,如 XML、實體和物件。

  • 它支援查詢表示式、lambda 表示式和擴充套件方法。

  • 在沒有 LINQ 的情況下,C# 程式必須包含用於訪問任何資料的方法和物件。與 LINQ 提供的替代方案相比,該程式碼量太大,可讀性太低。LINQ 提供了更好的程式碼,可以重用。它可以作為其他程式中的相同程式碼重用。使用的 LINQ 程式碼具有更好的可維護性,並且由於型別安全,錯誤較少。

  • 在編譯時執行完全型別檢查,另一方面,錯誤可以在執行時檢測到。

隨著我們的深入,我們需要了解一些方法,這些方法將有助於更好地理解程式碼及其演算法。

  • GetFiles - 它從作為輸入引數給出的目錄中返回檔名稱。

  • Select  它用於從指定的序列中獲取單個值。

  • FileInfo  它是一個類,提供用於複製、刪除和執行許多其他操作的不同型別的方法和屬性。

  • Math.Round 方法  此方法用於計算四捨五入的值。在我們的演算法中,將四捨五入到的值為 1。

在理解程式碼和演算法時,這些方法和類將具有最大的價值。它們為獲得所需的輸出奠定了基礎。

演算法

以下演算法將全面瞭解使用 LINQ 估算檔案大小的程式碼。我們將瞭解逐步方法,以便更深入地理解程式碼。

步驟 1 - 我們將使用 GetFiles 方法獲取目錄路徑。我們將以字串的形式儲存路徑。

步驟 2  現在我們將使用 File 方法選擇檔案。

步驟 3  現在我們將使用 Average() 函式計算檔案的平均值。

步驟 4  現在我們將使用 Math.round 函式將值四捨五入到小數點後 1 位。

步驟 5  最後,我們將使用控制檯寫入行函式列印檔案的大小。

步驟 6  最初在編碼時,我們必須確保我們不會錯過宣告所需的名稱空間 System.Linq。藉助它,我們能夠編寫 LINQ 類和方法並生成所需的輸出。

示例

using System;
using System.Linq;
using System.IO;
class TutorialsPoint{
   static void Main(string[] args){
      string[] s= Directory.GetFiles("c:\A");
      
      // Here, we are getting the file from the directory or path.
      var avg= s.Select(file => new FileInfo(file).Length).Average();
      
      // Here we are getting the average size of the file.
      avg = Math.Round(avg / 10, 1);
      
      // Now we are rounding off our value to 1 decimal point
      
      // We are storing the value in a variable named avg
      Console.WriteLine("The size of the file is:",avg);
      
      //Finally we will display the average file size.
   }
} 

輸出

The size of the file is 1 MB. 

時間複雜度

在上面提到的使用 LINQ 計算檔案大小的程式碼中,我們獲得了多個方法和類,這些方法和類作為一個整體為我們提供了所需的輸出。所有這些方法的時間複雜度都是常數,在大 O 表示法中可以稱為 O(1)。因此,整個程式碼的時間複雜度為 O(1)。

結論

在本文中,我們廣泛討論了使用 LINQ 計算檔案大小的方法。我們沒有直接跳到程式碼及其演算法,而是首先討論了什麼是 LINQ、它是如何工作的、它的優勢是什麼以及為什麼我們需要它。然後我們轉向相應的方法、程式碼和演算法。我們還了解了程式碼的時間複雜度。我們希望本文有助於增強您對 C# 的瞭解。

更新於: 2023-03-31

162 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告