Altbilgi içeriğine atla
.NET YARDıM

C# Bul (Geliştiriciler İçin Nasıl Çalışır)

C#'nin kullanışlı Find fonksiyonu eğitimimize hoş geldiniz. Kodlama sürecinizi düzenlemenizi sağlayacak güçlü bir özelliğe rastladınız. Bu nedenle, ister deneyimli bir kodlayıcı olun, ister yeni başlıyor olun, bu eğitim sizi başlamanız gereken tüm unsurlarla yönlendirecektir.

Bulma'nın Temelleri

Temelinde, Find belirli bir önermeyi karşılayan bir koleksiyon, dizi veya listedeki ilk öğeyi bulmanızı sağlayan bir fonksiyondur. Nedir bu şart, diye soruyorsunuz? Programlamada bir şart, bir koleksiyondaki öğeler için tanımlanan belirli koşulları test eden bir işlevdir.

Şimdi, bir genel sınıf örneğine dalalım.

public class BikePart
{
    public string Id { get; set; } // Property to identify the bike part

    // Override the Equals method to specify how to compare two BikePart objects
    public override bool Equals(object obj)
    {
        if (obj == null || !(obj is BikePart))
            return false;

        return this.Id == ((BikePart)obj).Id;
    }

    // Override GetHashCode for hashing BikePart objects
    public override int GetHashCode()
    {
        return this.Id.GetHashCode();
    }

    // Override ToString to return a custom string representation of the object
    public override string ToString()
    {
        return "BikePart ID: " + this.Id;
    }
}
public class BikePart
{
    public string Id { get; set; } // Property to identify the bike part

    // Override the Equals method to specify how to compare two BikePart objects
    public override bool Equals(object obj)
    {
        if (obj == null || !(obj is BikePart))
            return false;

        return this.Id == ((BikePart)obj).Id;
    }

    // Override GetHashCode for hashing BikePart objects
    public override int GetHashCode()
    {
        return this.Id.GetHashCode();
    }

    // Override ToString to return a custom string representation of the object
    public override string ToString()
    {
        return "BikePart ID: " + this.Id;
    }
}
Public Class BikePart
	Public Property Id() As String ' -  Property to identify the bike part

	' Override the Equals method to specify how to compare two BikePart objects
	Public Overrides Function Equals(ByVal obj As Object) As Boolean
		If obj Is Nothing OrElse Not (TypeOf obj Is BikePart) Then
			Return False
		End If

		Return Me.Id = DirectCast(obj, BikePart).Id
	End Function

	' Override GetHashCode for hashing BikePart objects
	Public Overrides Function GetHashCode() As Integer
		Return Me.Id.GetHashCode()
	End Function

	' Override ToString to return a custom string representation of the object
	Public Overrides Function ToString() As String
		Return "BikePart ID: " & Me.Id
	End Function
End Class
$vbLabelText   $csharpLabel

Bu kodda, BikePart bizim genel sınıfımızdır ve her bisiklet parçasını tanımlamak için genel bir string ID içerir. Bisiklet parçasının ID'sini güzelce yazdırmak için ToString metodunu geçersiz kıldık ve ayrıca karşılaştırma amacıyla Equals ve GetHashCode metodlarını da geçersiz kıldık.

Şartlarla Bulma'yı Kullanma

BikePart sınıfımıza sahip olduğumuza göre, bisiklet parçalarının bir listesini oluşturabilir ve belirli parçaları ID'lerine göre bulmak için Find kullanabiliriz. Aşağıdaki örneği düşünelim:

using System;
using System.Collections.Generic;

public static void Main()
{
    // Create a list of BikePart objects
    List<BikePart> bikeParts = new List<BikePart>
    {
        new BikePart { Id = "Chain Ring ID" },
        new BikePart { Id = "Crank Arm ID" },
        new BikePart { Id = "Regular Seat ID" },
        new BikePart { Id = "Banana Seat ID" },
    };

    // Define a predicate to find a BikePart with a specific ID
    Predicate<BikePart> findChainRingPredicate = (BikePart bp) => { return bp.Id == "Chain Ring ID"; };
    BikePart chainRingPart = bikeParts.Find(findChainRingPredicate);

    // Print the found BikePart's ID to the console
    Console.WriteLine(chainRingPart.ToString());
}
using System;
using System.Collections.Generic;

public static void Main()
{
    // Create a list of BikePart objects
    List<BikePart> bikeParts = new List<BikePart>
    {
        new BikePart { Id = "Chain Ring ID" },
        new BikePart { Id = "Crank Arm ID" },
        new BikePart { Id = "Regular Seat ID" },
        new BikePart { Id = "Banana Seat ID" },
    };

    // Define a predicate to find a BikePart with a specific ID
    Predicate<BikePart> findChainRingPredicate = (BikePart bp) => { return bp.Id == "Chain Ring ID"; };
    BikePart chainRingPart = bikeParts.Find(findChainRingPredicate);

    // Print the found BikePart's ID to the console
    Console.WriteLine(chainRingPart.ToString());
}
Imports System
Imports System.Collections.Generic

Public Shared Sub Main()
	' Create a list of BikePart objects
	Dim bikeParts As New List(Of BikePart) 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"}
	}

	' Define a predicate to find a BikePart with a specific ID
	Dim findChainRingPredicate As Predicate(Of BikePart) = Function(bp As BikePart)
		Return bp.Id = "Chain Ring ID"
	End Function
	Dim chainRingPart As BikePart = bikeParts.Find(findChainRingPredicate)

	' Print the found BikePart's ID to the console
	Console.WriteLine(chainRingPart.ToString())
End Sub
$vbLabelText   $csharpLabel

Bu kodda, benzersiz ID'lere sahip dört BikePart nesnesini başlatıyoruz. Sonraki adımda, bir bisiklet parçasının ID'sinin "Chain Ring ID" olup olmadığını kontrol eden bir önerme findChainRingPredicate oluşturuyoruz. Son olarak, tanımladığımız önermeyi kullanarak bisiklet parçalarımızın listesinde Find metodunu çağırıyoruz ve bulunan parçanın ID'sini konsola yazdırıyoruz.

Şart Parametresini Anlamak

Find metodumuzda Önerme eşleme parametresini merak ediyor olabilirsiniz. Bu aşamada, Find yöntemi bir öğe döndürme koşullarını tanımlarsınız. Bizim durumumuzda, Find yönteminin "Chain Ring ID" ile eşleşen ilk öğeyi döndürmesini istedik.

Eğer önermenizde tanımlanan koşullar hiçbir öğeye uymuyorsa, Find yöntemi varsayılan bir değer döndürecektir. Örneğin, bir tam sayı dizisi üzerinde çalışıyorsanız ve önermeniz bir eşleşme bulamazsa, Find yöntemi C#'daki tam sayılar için varsayılan değer olan '0'ı döndürecektir.

Doğrusal Arama Prensibi

Find fonksiyonunun tüm dizi, liste veya koleksiyon üzerinde döngüsel bir arama yaptığını kaydetmek önemlidir. Bu, ilk elemandan başlayarak, şartı karşılayan bir elemanın ilk görünümünü bulana kadar sırayla her bir takip eden elemanı incelediği anlamına gelir.

Bazı durumlarda, ilk yerine şartı karşılayan son elemanı bulmak isteyebilirsiniz. Bu amaçla, C# FindLast fonksiyonunu sağlar.

FindIndex ve FindLastIndex

Find belirli bir önermenize uyan bir öğenin ilk oluşumunu bulmanıza yardımcı olduğu gibi, C# ayrıca koşullarınıza uyan ilk ve son öğelerin indekslerini vermek için FindIndex ve FindLastIndex metodlarını sağlar.

Bir örnek deneyelim:

using System;
using System.Collections.Generic;

public static void Main()
{
    // Create a list of BikePart objects with an additional duplicate entry
    List<BikePart> bikeParts = new List<BikePart>
    {
        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
    };

    // Define a predicate to find a BikePart with a specific ID
    Predicate<BikePart> findChainRingPredicate = (BikePart bp) => { return bp.Id == "Chain Ring ID"; };

    // Find the index of the first and last occurrence of the specified BikePart
    int firstChainRingIndex = bikeParts.FindIndex(findChainRingPredicate);
    int lastChainRingIndex = bikeParts.FindLastIndex(findChainRingPredicate);

    // Print the indices to the console
    Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}");
    Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}");
}
using System;
using System.Collections.Generic;

public static void Main()
{
    // Create a list of BikePart objects with an additional duplicate entry
    List<BikePart> bikeParts = new List<BikePart>
    {
        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
    };

    // Define a predicate to find a BikePart with a specific ID
    Predicate<BikePart> findChainRingPredicate = (BikePart bp) => { return bp.Id == "Chain Ring ID"; };

    // Find the index of the first and last occurrence of the specified BikePart
    int firstChainRingIndex = bikeParts.FindIndex(findChainRingPredicate);
    int lastChainRingIndex = bikeParts.FindLastIndex(findChainRingPredicate);

    // Print the indices to the console
    Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}");
    Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}");
}
Imports System
Imports System.Collections.Generic

Public Shared Sub Main()
	' Create a list of BikePart objects with an additional duplicate entry
	Dim bikeParts As New List(Of BikePart) 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"}
	}

	' Define a predicate to find a BikePart with a specific ID
	Dim findChainRingPredicate As Predicate(Of BikePart) = Function(bp As BikePart)
		Return bp.Id = "Chain Ring ID"
	End Function

	' Find the index of the first and last occurrence of the specified BikePart
	Dim firstChainRingIndex As Integer = bikeParts.FindIndex(findChainRingPredicate)
	Dim lastChainRingIndex As Integer = bikeParts.FindLastIndex(findChainRingPredicate)

	' Print the indices to the console
	Console.WriteLine($"First Chain Ring ID found at index: {firstChainRingIndex}")
	Console.WriteLine($"Last Chain Ring ID found at index: {lastChainRingIndex}")
End Sub
$vbLabelText   $csharpLabel

FindAll Gücü

Adının da belirttiği gibi, FindAll metodu, belirli bir önermeyi karşılayan koleksiyondaki tüm öğeleri getirir. Belirli koşullara dayalı olarak elemanları filtrelemeniz gerektiğinde kullanılır. FindAll metodu, eşleşen tüm öğeleri içeren yeni bir Liste döndürür.

İşte bir kod örneği:

using System;
using System.Collections.Generic;

public static void Main()
{
    // Create a list of BikePart objects with an additional duplicate entry
    List<BikePart> bikeParts = new List<BikePart>
    {
        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
    };

    // Define a predicate to find all BikeParts with a specific ID
    Predicate<BikePart> findChainRingPredicate = (BikePart bp) => { return bp.Id == "Chain Ring ID"; };

    // Use FindAll to get all matching BikePart objects
    List<BikePart> chainRings = bikeParts.FindAll(findChainRingPredicate);

    // Print the count and details of each found BikePart
    Console.WriteLine($"Found {chainRings.Count} Chain Rings:");
    foreach (BikePart chainRing in chainRings)
    {
        Console.WriteLine(chainRing.ToString());
    }
}
using System;
using System.Collections.Generic;

public static void Main()
{
    // Create a list of BikePart objects with an additional duplicate entry
    List<BikePart> bikeParts = new List<BikePart>
    {
        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
    };

    // Define a predicate to find all BikeParts with a specific ID
    Predicate<BikePart> findChainRingPredicate = (BikePart bp) => { return bp.Id == "Chain Ring ID"; };

    // Use FindAll to get all matching BikePart objects
    List<BikePart> chainRings = bikeParts.FindAll(findChainRingPredicate);

    // Print the count and details of each found BikePart
    Console.WriteLine($"Found {chainRings.Count} Chain Rings:");
    foreach (BikePart chainRing in chainRings)
    {
        Console.WriteLine(chainRing.ToString());
    }
}
Imports System
Imports System.Collections.Generic

Public Shared Sub Main()
	' Create a list of BikePart objects with an additional duplicate entry
	Dim bikeParts As New List(Of BikePart) 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"}
	}

	' Define a predicate to find all BikeParts with a specific ID
	Dim findChainRingPredicate As Predicate(Of BikePart) = Function(bp As BikePart)
		Return bp.Id = "Chain Ring ID"
	End Function

	' Use FindAll to get all matching BikePart objects
	Dim chainRings As List(Of BikePart) = bikeParts.FindAll(findChainRingPredicate)

	' Print the count and details of each found BikePart
	Console.WriteLine($"Found {chainRings.Count} Chain Rings:")
	For Each chainRing As BikePart In chainRings
		Console.WriteLine(chainRing.ToString())
	Next chainRing
End Sub
$vbLabelText   $csharpLabel

IronPDF'yi Resme Dahil Etmek

C#'ın Bulma bilgisinin kullanılabileceği önemli bir alan, PDF içeriğiyle çalışmak için güçlü bir C# kütüphanesi olan IronPDF kullanarak PDF içeriği manipülasyonu yapmaktır.

Çeşitli bisiklet parçalarıyla ilgili bilgi içeren bir PDF belgeyle çalıştığımızı varsayalım. Çoğu zaman, bu içerik içinde belirli parçaları bulmamız gerekir. Bu durumda IronPDF ve C# Bulma yöntemi güçlü bir çözüm sunmak için birleşir.

Öncelikle, IronPDF kullanarak PDF'imizden metni çıkartırız ve ardından daha önce öğrendiğimiz Find veya FindAll metodunu kullanarak çıkarılan metinde belirli bir parçayı bulabiliriz.

using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        // Load and extract text from a PDF document
        PdfDocument pdf = PdfDocument.FromFile(@"C:\Users\Administrator\Desktop\bike.pdf");
        string pdfText = pdf.ExtractAllText();

        // Split the extracted text into lines
        List<string> pdfLines = pdfText.Split('\n').ToList();

        // Define a predicate to find lines that contain a specific text
        Predicate<string> findChainRingPredicate = (string line) => { return line.Contains("Chain Ring ID"); };

        // Use FindAll to get all lines containing the specified text
        List<string> chainRingLines = pdfLines.FindAll(findChainRingPredicate);

        // Print the count and content of each found line
        Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':");
        foreach (string line in chainRingLines)
        {
            Console.WriteLine(line);
        }
    }
}
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        // Load and extract text from a PDF document
        PdfDocument pdf = PdfDocument.FromFile(@"C:\Users\Administrator\Desktop\bike.pdf");
        string pdfText = pdf.ExtractAllText();

        // Split the extracted text into lines
        List<string> pdfLines = pdfText.Split('\n').ToList();

        // Define a predicate to find lines that contain a specific text
        Predicate<string> findChainRingPredicate = (string line) => { return line.Contains("Chain Ring ID"); };

        // Use FindAll to get all lines containing the specified text
        List<string> chainRingLines = pdfLines.FindAll(findChainRingPredicate);

        // Print the count and content of each found line
        Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':");
        foreach (string line in chainRingLines)
        {
            Console.WriteLine(line);
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Linq

Public Class Program
	Public Shared Sub Main()
		' Load and extract text from a PDF document
		Dim pdf As PdfDocument = PdfDocument.FromFile("C:\Users\Administrator\Desktop\bike.pdf")
		Dim pdfText As String = pdf.ExtractAllText()

		' Split the extracted text into lines
		Dim pdfLines As List(Of String) = pdfText.Split(ControlChars.Lf).ToList()

		' Define a predicate to find lines that contain a specific text
		Dim findChainRingPredicate As Predicate(Of String) = Function(line As String)
			Return line.Contains("Chain Ring ID")
		End Function

		' Use FindAll to get all lines containing the specified text
		Dim chainRingLines As List(Of String) = pdfLines.FindAll(findChainRingPredicate)

		' Print the count and content of each found line
		Console.WriteLine($"Found {chainRingLines.Count} lines mentioning 'Chain Ring ID':")
		For Each line As String In chainRingLines
			Console.WriteLine(line)
		Next line
	End Sub
End Class
$vbLabelText   $csharpLabel

Bu kodda bir PDF yükledik, metni çıkardık, satırlara böldük ve sonra 'Chain Ring ID' bahseden tüm satırları bulmak için FindAll kullandık.

VB.NET ile PDF Dosyalarını Nasıl Görüntüleyebilirsiniz: Şekil 1

Find metodunun IronPDF ile pratik bir senaryoda nasıl kullanılabileceğine dair temel bir örnek budur. C#, güçlü kütüphaneleriyle birlikte programlama görevlerinizi daha kolay ve daha verimli hale getirmeye yardımcı olan araçlarla çok yönlülüğünü ve faydasını gösterir.

Sonuç

Bu öğreticide, C# Find metoduna ve onun ilişkilerine, FindIndex, FindLastIndex ve FindAll derinlemesine inceledik. Onların kullanım alanlarını keşfettik, bazı kod örneklerini inceledik ve hangi koşullarda en etkili olduklarını açığa çıkardık.

Ayrıca, IronPDF kütüphanesini kullanarak PDF manipülasyon dünyasına da adım attık. Benzer şekilde, Find metod bilgimizin bir PDF dokümanı içeriği çıkartma ve arama hususunda pratik uygulamasını gördük.

IronPDF, işlevselliklerini keşfetmek ve C# projelerinize nasıl fayda sağlayabileceğini belirlemek için harika bir fırsat sunan IronPDF'nin ücretsiz denemesini sunuyor. Denemeden sonra IronPDF kullanmaya devam etmeye karar verirseniz, lisanslar $799 ile başlıyor.

Sıkça Sorulan Sorular

Geliştiriciler için C# Bul fonksiyonu nasıl çalışır?

C# Bul fonksiyonu, geliştiricilerin belirli bir öncül tarafından tanımlanan koşulları sağlayan bir koleksiyon, dizi veya listedeki ilk elemanı bulmasını sağlar. Bu özellik kodlama sürecini basitleştirmek için faydalıdır.

Bir öncül nedir ve C# dilinde nasıl kullanılır?

C# dilinde bir öncül, belirli bir koşula sahip bir metodu temsil eden bir delegedir. Find gibi yöntemlerde, bir koleksiyondaki her bir öğeyi test etmek için kullanılır ve koşulları karşılayanları döndürür.

C# dilinde özelleştirilmiş bir sınıfla Find yöntemini kullanabilir miyim?

Evet, C# dilinde bir özelleştirilmiş sınıfla bir öncül tanımlayarak Find yöntemini kullanabilirsiniz; bu sınıfın elemanlarını aramak için bir nesneyi belirli bir özelliğiyle bulmak gibi.

Find yönteminde koşulları karşılayan hiçbir öğe olmazsa ne olur?

Find yönteminde belirli bir öncül tarafından belirtilen koşulları karşılayan bir öğe bulunamazsa, referans türleri için null veya değer türleri için 0 gibi bir varsayılan değer döndürür.

Find ve FindAll yöntemlerinin C# dilindeki farkları nelerdir?

Find yöntemi öncülü karşılayan ilk elemanı döndürürken, FindAll öncül şartlarını karşılayan tüm elemanların listesini döndürür.

FindIndex ve FindLastIndex yöntemleri nasıl farklılık gösterir?

FindIndex, öncülü karşılayan ilk elemanın indeksini döndürürken, FindLastIndex, kriterleri karşılayan son elemanın indeksini döndürür.

Metin arama için C# Find'ı PDF kütüphanesi ile nasıl entegre edebilirim?

Bir PDF kütüphanesi kullanarak, PDF'den metin çıkarabilir ve belirli içerik için metin içinde arama yapmak için Find metodunu kullanabilirsiniz, bu doküman işleme için etkilidir.

Find ile elemanları özelliklerine göre aramak mümkün mü?

Evet, belirli bir kriter aramak için element özelliklerine dayalı bir öncül tanımlayabilir, örneğin belirli bir ID veya özelliğe sahip bir nesneyi bulmak gibi.

Find yöntemi, büyük veri koleksiyonları için ne kadar verimlidir?

Find yöntemi, her bir elemanı sıralı olarak kontrol ettiği için doğrusal bir arama gerçekleştirir. Basit olmakla birlikte, O(n) karmaşıklığı nedeniyle çok büyük koleksiyonlar için en verimli olmayabilir.

PDF kütüphanesi C# geliştirimcileri için ne gibi faydalar sunar?

PDF kütüphanesi, geliştiricilere C# kullanarak PDF içeriği çıkarma, işleme ve arama gibi işlemlerde güçlü yetenekler sunarak, dokümanla ilgili görevlerin verimliliğini artırır.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara