在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
歡迎來到我們關於 C# 的 Find
功能的實用教程。 您剛剛發現了一個強大的功能,可以簡化您的編碼流程。 因此,無論您是經驗豐富的程式設計師還是剛入門,本教程將逐步指導您完成所有元素,以幫助您啟動。
根本上,Find
是一個函數,允許您在集合、陣列或清單中找到滿足指定條件的第一個元素。 你問,什麼是謂詞? 在程式設計中,謂詞是一個用於測試集合中元素所定義條件的函數。
現在,我們來探討一個公共類別範例。
public class BikePart
{
public string id { get; set; }
public override bool Equals(object obj)
{
if (obj == null
!(obj is BikePart))
return false;
return this.id == ((BikePart)obj).id;
}
public override int GetHashCode()
{
return this.id.GetHashCode();
}
public override string ToString()
{
return "BikePart ID: " + this.id;
}
}
public class BikePart
{
public string id { get; set; }
public override bool Equals(object obj)
{
if (obj == null
!(obj is BikePart))
return false;
return this.id == ((BikePart)obj).id;
}
public override int GetHashCode()
{
return this.id.GetHashCode();
}
public override string ToString()
{
return "BikePart ID: " + this.id;
}
}
Public Class BikePart
Public Property id() As String
Public Overrides Function Equals(ByVal obj As Object) As Boolean
If obj Is Nothing (Not (TypeOf obj Is BikePart)) Then
Return False
End If
Return Me.id = DirectCast(obj, BikePart).id
End Function
Public Overrides Function GetHashCode() As Integer
Return Me.id.GetHashCode()
End Function
Public Overrides Function ToString() As String
Return "BikePart ID: " & Me.id
End Function
End Class
在此程式碼中,BikePart
是我們的公共類別,並且它包含一個公共字串 ID 以識別每個自行車零件。 我們已經重寫了ToString
方法,以漂亮地打印自行車零件的ID,同時我們還重寫了Equals
和GetHashCode
方法以便進行比較。
現在我們擁有了BikePart
類別,我們可以建立一個自行車零件的清單,並使用Find
根據它們的ID來定位特定零件。 讓我們考慮以下範例:
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
BikePart chainRingPart = bikeParts.Find(findChainRingPredicate);
Console.WriteLine(chainRingPart.ToString());
}
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
BikePart chainRingPart = bikeParts.Find(findChainRingPredicate);
Console.WriteLine(chainRingPart.ToString());
}
Public Shared Sub Main()
Dim bikeParts As New List From {
New BikePart With {.id = "Chain Ring ID"},
New BikePart With {.id = "Crank Arm ID"},
New BikePart With {.id = "Regular Seat ID"},
New BikePart With {.id = "Banana Seat ID"}
}
Dim findChainRingPredicate As Predicate = Function(bp As BikePart)
Return bp.id = "Chain Ring ID"
End Function
Dim chainRingPart As BikePart = bikeParts.Find(findChainRingPredicate)
Console.WriteLine(chainRingPart.ToString())
End Sub
在這段程式碼中,我們實例化了四個具有唯一 ID 的BikePart
物件。 接下來,我們創建一個謂詞findChainRingPredicate
,用於檢查自行車部件是否具有 ID "Chain Ring ID"。 最後,我們使用已定義的謂詞對單車零件清單調用 Find
,並將找到的零件ID列印到控制台。
您可能會對我們 Find
方法中的 Predicate match 參數感到好奇。 這是您定義Find
方法返回元素的條件之處。 在我們的情況下,我們希望Find
方法返回匹配「鏈環ID」的第一個元素。
如果沒有元素滿足您謂詞中定義的條件,Find
方法將返回預設值。 例如,如果您正在使用整數數組並且您的斷言沒有找到匹配項,Find
方法將返回 '0',這是 C# 中整數的默認值。
值得注意的是,Find
函數會對整個陣列、列表或集合進行線性搜尋。 這意味著從第一個元素開始,並依序檢查每個後續元素,直到找到第一個滿足條件的元素為止。
在某些情況下,您可能希望找到滿足條件的最後一個元素,而不是第一個。 為此,C# 提供了FindLast
函數。
FindIndex
和 FindLastIndex
正如Find
幫助您定位符合指定條件的第一個元素一樣,C#還提供FindIndex
和FindLastIndex
方法,分別為您提供符合條件的第一個和最後一個元素的索引。
讓我們嘗試一個例子:
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
int firstChainRingIndex = bikeParts.FindIndex(findChainRingPredicate);
int lastChainRingIndex = bikeParts.FindLastIndex(findChainRingPredicate);
Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}");
Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}");
}
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
int firstChainRingIndex = bikeParts.FindIndex(findChainRingPredicate);
int lastChainRingIndex = bikeParts.FindLastIndex(findChainRingPredicate);
Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}");
Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}");
}
Public Shared Sub Main()
Dim bikeParts As New List From {
New BikePart With {.id = "Chain Ring ID"},
New BikePart With {.id = "Crank Arm ID"},
New BikePart With {.id = "Regular Seat ID"},
New BikePart With {.id = "Banana Seat ID"},
New BikePart With {.id = "Chain Ring ID"}
}
Dim findChainRingPredicate As Predicate = Function(bp As BikePart)
Return bp.id = "Chain Ring ID"
End Function
Dim firstChainRingIndex As Integer = bikeParts.FindIndex(findChainRingPredicate)
Dim lastChainRingIndex As Integer = bikeParts.FindLastIndex(findChainRingPredicate)
Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}")
Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}")
End Sub
FindAll
的力量FindAll
方法,如其名稱所示,檢索集合中滿足條件的所有元素。 當您需要根據某些條件篩選元素時使用。 FindAll
方法返回包含所有匹配元素的新 List。
以下是一個代碼範例:
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
List chainRings = bikeParts.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRings.Count} Chain Rings:");
foreach (BikePart chainRing in chainRings)
{
Console.WriteLine(chainRing.ToString());
}
}
public static void Main()
{
List bikeParts = new List
{
new BikePart { id = "Chain Ring ID" },
new BikePart { id = "Crank Arm ID" },
new BikePart { id = "Regular Seat ID" },
new BikePart { id = "Banana Seat ID" },
new BikePart { id = "Chain Ring ID" }, // Added a second chain ring
};
Predicate findChainRingPredicate = (BikePart bp) => { return bp.id == "Chain Ring ID"; };
List chainRings = bikeParts.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRings.Count} Chain Rings:");
foreach (BikePart chainRing in chainRings)
{
Console.WriteLine(chainRing.ToString());
}
}
Public Shared Sub Main()
Dim bikeParts As New List From {
New BikePart With {.id = "Chain Ring ID"},
New BikePart With {.id = "Crank Arm ID"},
New BikePart With {.id = "Regular Seat ID"},
New BikePart With {.id = "Banana Seat ID"},
New BikePart With {.id = "Chain Ring ID"}
}
Dim findChainRingPredicate As Predicate = Function(bp As BikePart)
Return bp.id = "Chain Ring ID"
End Function
Dim chainRings As List = bikeParts.FindAll(findChainRingPredicate)
Console.WriteLine($"Found {chainRings.Count} Chain Rings:")
For Each chainRing As BikePart In chainRings
Console.WriteLine(chainRing.ToString())
Next chainRing
End Sub
我們的 C# Find 知識可以用於的一個關鍵領域是使用 IronPDF 進行 PDF 內容操作,這是一個強大的 C# PDF 處理庫。
假設我們正在處理一份包含各種自行車零件資訊的 PDF 文件。 通常,我們需要在此內容中找到特定部分。 這就是 IronPDF 與 C# Find 方法結合提供強大解決方案的地方。
首先,我們會使用 IronPDF 從我們的 PDF 中擷取文本,然後可以使用之前學到的 Find
或 FindAll
方法在擷取的文本中定位具體部分。
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile(@"C:\Users\Administrator\Desktop\bike.pdf");
string pdfText = pdf.ExtractAllText();
// Assuming our PDF text is split into lines
List pdfLines = pdfText.Split('\n').ToList();
Predicate findChainRingPredicate = (string line) => { return line.Contains("Chain Ring ID"); };
List chainRingLines = pdfLines.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':");
foreach (string line in chainRingLines)
{
Console.WriteLine(line);
}
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile(@"C:\Users\Administrator\Desktop\bike.pdf");
string pdfText = pdf.ExtractAllText();
// Assuming our PDF text is split into lines
List pdfLines = pdfText.Split('\n').ToList();
Predicate findChainRingPredicate = (string line) => { return line.Contains("Chain Ring ID"); };
List chainRingLines = pdfLines.FindAll(findChainRingPredicate);
Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':");
foreach (string line in chainRingLines)
{
Console.WriteLine(line);
}
Imports Microsoft.VisualBasic
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("C:\Users\Administrator\Desktop\bike.pdf")
Private pdfText As String = pdf.ExtractAllText()
' Assuming our PDF text is split into lines
Private pdfLines As List = pdfText.Split(ControlChars.Lf).ToList()
Private findChainRingPredicate As Predicate = Function(line As String)
Return line.Contains("Chain Ring ID")
End Function
Private chainRingLines As List = pdfLines.FindAll(findChainRingPredicate)
Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':")
For Each line As String In chainRingLines
Console.WriteLine(line)
Next line
在這段程式碼中,我們已加載了PDF,提取了文本,將其分割成行,然後使用FindAll
來定位所有提到「Chain Ring ID」的行。
這是一個基本範例,說明如何在實際場景中將 Find
方法與 IronPDF 一起使用。 它展示了 C# 的實用性和多功能性,以及其強大的庫如何幫助使您的編程任務更輕鬆和高效。
在本教程中,我們深入探討了 C# 的 Find
方法及其相關方法,FindIndex
、FindLastIndex
和 FindAll
。 我們探討了它們的用途,研究了一些代碼範例,並發現了它們最有效的情況。
我們還使用IronPDF庫進入了PDF操作的世界。 同樣地,我們見識到將我們的Find
方法知識實際應用於PDF文件中內容的提取和搜索。
IronPDF 提供免費的IronPDF 試用,是探索其功能並確定其如何惠及您的 C# 專案的絕佳機會。 如果您決定在試用後繼續使用IronPDF,許可證的起價為$749。