푸터 콘텐츠로 바로가기
.NET 도움말

C# LINQ Join 쿼리 문법 (개발자를 위한 작동 원리)

C# 프로그래밍의 다재다능함 속에서 LINQ (언어 통합 쿼리)는 객체 컬렉션을 쿼리하고 조작하기 위한 강력한 도구로 두드러집니다. LINQ가 제공하는 수많은 연산자 중에서 Join 연산자는 여러 소스의 데이터를 병합할 때 중요한 역할을 합니다.

이 기사에서는 C# LINQ Join 연산자의 복잡성을 파헤치고, 그 기능, 문법 및 실제 적용 사례를 풀어볼 것입니다.

조인 절의 기본 이해

본질적으로 LINQ Join 연산자는 두 개 이상의 컬렉션의 요소를 지정된 조건에 기반하여 결합하도록 설계되었습니다. 이 연산자는 개발자가 메모리에 존재하는 컬렉션에서 SQL과 유사한 조인을 수행할 수 있게 하여 다양한 출처의 데이터를 쉽게 병합할 수 있도록 합니다.

LINQ Join 연산자의 문법

LINQ Join 연산자의 문법은 표현력이 뛰어나며 SQL 조인과 유사한 패턴을 따릅니다. 기본 문법은 다음과 같습니다:

var queryResult = 
    from element1 in collection1
    join element2 in collection2 on element1.Key equals element2.Key
    select new { element1, element2 };
var queryResult = 
    from element1 in collection1
    join element2 in collection2 on element1.Key equals element2.Key
    select new { element1, element2 };
Dim queryResult = From element1 In collection1
	Join element2 In collection2 On element1.Key Equals element2.Key
	Select New With {
		Key element1,
		Key element2
	}
$vbLabelText   $csharpLabel

이 문법에서:

  • element1element2collection1collection2에서 요소를 나타내는 변수입니다.
  • element1.Keyelement2.Key는 조인 작업의 기준으로 사용되는 속성입니다.
  • equals 키워드는 조인의 조건을 지정합니다.
  • select 절은 두 컬렉션의 요소를 결합한 새 객체를 생성합니다.

LINQ 조인의 유형

LINQ는 다음과 같은 여러 유형의 조인을 지원합니다:

  1. Inner Join: 두 컬렉션에 일치하는 키가 있는 요소만 반환합니다.

    var innerJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID // join orders to customers based on the customer ID key
                    select new { customer.CustomerID, customer.CustomerName, order.OrderID }; // create a new anonymous object based on the objects obtained from the join
    var innerJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID // join orders to customers based on the customer ID key
                    select new { customer.CustomerID, customer.CustomerName, order.OrderID }; // create a new anonymous object based on the objects obtained from the join
    Dim innerJoin = From customer In customers ' create a new anonymous object based on the objects obtained from the join
    	Join order In orders On customer.CustomerID Equals order.CustomerID
    	Select New With {
    		Key customer.CustomerID,
    		Key customer.CustomerName,
    		Key order.OrderID
    	}
    $vbLabelText   $csharpLabel
  2. Left Outer Join (기본값): 왼쪽 컬렉션의 모든 요소와 오른쪽 컬렉션의 일치하는 요소를 반환합니다. 일치하는 요소가 없을 경우 결과는 오른쪽 요소의 기본값을 포함합니다.

    var leftOuterJoin = from customer in customers
                        join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                        from co in customerOrders.DefaultIfEmpty()
                        select new { customer.CustomerID, customer.CustomerName, OrderID = co?.OrderID ?? -1 };
    var leftOuterJoin = from customer in customers
                        join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                        from co in customerOrders.DefaultIfEmpty()
                        select new { customer.CustomerID, customer.CustomerName, OrderID = co?.OrderID ?? -1 };
    Dim leftOuterJoin = From customer In customers
    	Group Join order In orders On customer.CustomerID Equals order.CustomerID Into customerOrders = Group
    	From co In customerOrders.DefaultIfEmpty()
    	Select New With {
    		Key customer.CustomerID,
    		Key customer.CustomerName,
    		Key .OrderID = If(co?.OrderID, -1)
    	}
    $vbLabelText   $csharpLabel
  3. Group Join: 왼쪽 컬렉션의 요소를 오른쪽 컬렉션의 일치 요소와 그룹화합니다.

    var groupJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                    select new { customer.CustomerID, customer.CustomerName, Orders = customerOrders };
    var groupJoin = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID into customerOrders
                    select new { customer.CustomerID, customer.CustomerName, Orders = customerOrders };
    Dim groupJoin = From customer In customers
    	Group Join order In orders On customer.CustomerID Equals order.CustomerID Into customerOrders = Group
    	Select New With {
    		Key customer.CustomerID,
    		Key customer.CustomerName,
    		Key .Orders = customerOrders
    	}
    $vbLabelText   $csharpLabel

현실 세계의 응용: 고객과 주문 데이터 결합

실제 예로 두 개의 컬렉션이 있는 상황을 고려해보겠습니다: customersorders. LINQ Join 연산자를 사용하여 고객 정보와 해당 주문을 결합한 결과 세트를 만들고자 합니다.

var customerOrderInfo = 
    from customer in customers
    join order in orders on customer.CustomerID equals order.CustomerID
    select new { customer.CustomerID, customer.CustomerName, order.OrderID, order.OrderDate };
var customerOrderInfo = 
    from customer in customers
    join order in orders on customer.CustomerID equals order.CustomerID
    select new { customer.CustomerID, customer.CustomerName, order.OrderID, order.OrderDate };
Dim customerOrderInfo = From customer In customers
	Join order In orders On customer.CustomerID Equals order.CustomerID
	Select New With {
		Key customer.CustomerID,
		Key customer.CustomerName,
		Key order.OrderID,
		Key order.OrderDate
	}
$vbLabelText   $csharpLabel

이 예제에서 결과 세트는 고객 정보와 관련된 주문 항목을 포함하게 됩니다. 조인 확장 메서드 문법은 C# 개발자가 SQL과 유사한 조인 작업을 수행할 수 있도록 도와줍니다.

IronPDF 소개합니다

C# LINQ 조인 쿼리 구문(개발자용 작동 방식): 그림 1 - IronPDF 웹페이지

IronPDF로 PDF 솔루션 개발은 PDF 문서를 생성, 처리, 편집하기 위한 포괄적인 C# 라이브러리입니다. 이 라이브러리는 개발자가 다양한 데이터 소스에서 PDF 문서를 동적으로 생성할 수 있도록 함으로써, PDF 문서 생성이 필요한 애플리케이션에 다재다능한 솔루션을 제공합니다.

IronPDF 설치: 빠른 시작

C# 프로젝트에서 IronPDF 라이브러리를 활용하려면 IronPDF NuGet 패키지를 쉽게 설치할 수 있습니다. 패키지 관리자 콘솔에서 다음 명령을 사용하십시오:

Install-Package IronPdf 

또한, NuGet 패키지 관리자에서 "IronPDF"를 검색하여 설치할 수 있습니다.

C# LINQ 조인 쿼리 구문(개발자용 작동 방식): 그림 2 - NuGet 패키지 관리자에서 IronPDF 라이브러리 설치

LINQ Join 및 IronPDF: 다이내믹 듀오?

서로 다른 출처의 데이터를 병합할 수 있는 기능으로 알려진 LINQ Join 연산자는 데이터 통합이 중요한 시나리오에서 유용한 도구가 될 수 있습니다. IronPDF와 함께 LINQ Join을 사용할 때의 주요 고려사항은 PDF 문서에 통합하려는 데이터의 성질입니다.

IronPDF의 하이라이트는 레이아웃과 스타일을 그대로 유지시키는 HTML to PDF 변환 기능입니다. 이 기능은 웹 콘텐츠로부터의 PDF 생성을 가능하게 하여 보고서, 송장, 문서화에 적합합니다. HTML 파일, URL, HTML 문자열은 매끄럽게 PDF로 변환할 수 있습니다.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

시나리오 1: PDF 생성 전에 데이터 결합

PDF 생성 프로세스를 시작하기 전에 여러 데이터 소스에서 데이터를 결합하는 것이 목표라면 LINQ Join을 독립적으로 사용할 수 있습니다. 통합된 데이터 세트가 완성되면 IronPDF를 이용하여 통합된 데이터를 기반으로 동적으로 PDF 문서를 생성할 수 있습니다.

여기 간단한 예제가 있습니다:

// Assume 'customerOrderInfo' is a result set obtained using LINQ Join
var pdfDocument = new IronPdf.ChromePdfRenderer();
foreach (var entry in customerOrderInfo)
{
    // Use IronPDF to add content to the PDF based on integrated data
    pdfDocument.AddHTML($"<p>Customer ID: {entry.CustomerID}, Order ID: {entry.OrderID}</p>");
}
// Save or render the PDF document as needed
pdfDocument.SaveAs("IntegratedDataDocument.pdf");
// Assume 'customerOrderInfo' is a result set obtained using LINQ Join
var pdfDocument = new IronPdf.ChromePdfRenderer();
foreach (var entry in customerOrderInfo)
{
    // Use IronPDF to add content to the PDF based on integrated data
    pdfDocument.AddHTML($"<p>Customer ID: {entry.CustomerID}, Order ID: {entry.OrderID}</p>");
}
// Save or render the PDF document as needed
pdfDocument.SaveAs("IntegratedDataDocument.pdf");
' Assume 'customerOrderInfo' is a result set obtained using LINQ Join
Dim pdfDocument = New IronPdf.ChromePdfRenderer()
For Each entry In customerOrderInfo
	' Use IronPDF to add content to the PDF based on integrated data
	pdfDocument.AddHTML($"<p>Customer ID: {entry.CustomerID}, Order ID: {entry.OrderID}</p>")
Next entry
' Save or render the PDF document as needed
pdfDocument.SaveAs("IntegratedDataDocument.pdf")
$vbLabelText   $csharpLabel

IronPDF 문서를 방문하여 PDF 문서 생성을 위한 더 많은 방법과 IronPDF와 함께 LINQ Join을 사용하는 방법을 탐색해 보세요.

시나리오 2: PDF 생성 중 동적 데이터 통합

IronPDF는 PDF 문서에 동적 콘텐츠 추가를 가능하게 하여 PDF 생성 프로세스 중 LINQ Join을 사용하여 데이터를 통합할 수 있습니다. 여기에서는 실제 적용 사례를 표현하기 위해 고객 클래스를 생성하고 정리할 것입니다. 데이터 소스는 SQL 데이터베이스나 몇 가지 구조화된 형식이 될 수 있으며, 이 경우 데이터 속성 세트를 포함한 객체의 리스트가 데이터베이스의 테이블처럼 존재합니다. 다음 예제는 PDF 생성을 위한 HTML 문자열을 사용하여 문서를 생성할 때 IronPDF와 함께 LINQ Join 메소드를 자세히 통합하는 방법을 보여줍니다:

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

class Order
{
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
    // Other order-related properties...
}

class Customer
{
    public int CustomerID { get; set; }
    // Other customer-related properties...
}

class Program
{
    static void Main()
    {
        // Sample orders collection
        var orders = new List<Order>
        {
            new Order { OrderID = 1, CustomerID = 1 },
            new Order { OrderID = 2, CustomerID = 1 },
            new Order { OrderID = 3, CustomerID = 2 },
        };

        // Sample customers collection
        var customers = new List<Customer>
        {
            new Customer { CustomerID = 1 },
            new Customer { CustomerID = 2 },
        };

        var pdfDocument = new ChromePdfRenderer();
        string htmlContent = "<h1>Details generated using LINQ JOIN</h1>";

        // Use join to find customer orders
        var query = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID
                    select new { CustomerID = customer.CustomerID, OrderID = order.OrderID };

        foreach (var result in query)
        {
            // Use IronPDF to dynamically add content to the PDF based on integrated data
            htmlContent += $"<p>Customer ID: {result.CustomerID}, Order ID: {result.OrderID}</p>";
        }

        // Save or render the PDF document as needed
        pdfDocument.RenderHtmlAsPdf(htmlContent)
                   .SaveAs("DynamicIntegratedDataDocument.pdf");
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using IronPdf;

class Order
{
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
    // Other order-related properties...
}

class Customer
{
    public int CustomerID { get; set; }
    // Other customer-related properties...
}

class Program
{
    static void Main()
    {
        // Sample orders collection
        var orders = new List<Order>
        {
            new Order { OrderID = 1, CustomerID = 1 },
            new Order { OrderID = 2, CustomerID = 1 },
            new Order { OrderID = 3, CustomerID = 2 },
        };

        // Sample customers collection
        var customers = new List<Customer>
        {
            new Customer { CustomerID = 1 },
            new Customer { CustomerID = 2 },
        };

        var pdfDocument = new ChromePdfRenderer();
        string htmlContent = "<h1>Details generated using LINQ JOIN</h1>";

        // Use join to find customer orders
        var query = from customer in customers
                    join order in orders on customer.CustomerID equals order.CustomerID
                    select new { CustomerID = customer.CustomerID, OrderID = order.OrderID };

        foreach (var result in query)
        {
            // Use IronPDF to dynamically add content to the PDF based on integrated data
            htmlContent += $"<p>Customer ID: {result.CustomerID}, Order ID: {result.OrderID}</p>";
        }

        // Save or render the PDF document as needed
        pdfDocument.RenderHtmlAsPdf(htmlContent)
                   .SaveAs("DynamicIntegratedDataDocument.pdf");
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports IronPdf

Friend Class Order
	Public Property OrderID() As Integer
	Public Property CustomerID() As Integer
	' Other order-related properties...
End Class

Friend Class Customer
	Public Property CustomerID() As Integer
	' Other customer-related properties...
End Class

Friend Class Program
	Shared Sub Main()
		' Sample orders collection
		Dim orders = New List(Of Order) From {
			New Order With {
				.OrderID = 1,
				.CustomerID = 1
			},
			New Order With {
				.OrderID = 2,
				.CustomerID = 1
			},
			New Order With {
				.OrderID = 3,
				.CustomerID = 2
			}
		}

		' Sample customers collection
		Dim customers = New List(Of Customer) From {
			New Customer With {.CustomerID = 1},
			New Customer With {.CustomerID = 2}
		}

		Dim pdfDocument = New ChromePdfRenderer()
		Dim htmlContent As String = "<h1>Details generated using LINQ JOIN</h1>"

		' Use join to find customer orders
		Dim query = From customer In customers
			Join order In orders On customer.CustomerID Equals order.CustomerID
			Select New With {
				Key .CustomerID = customer.CustomerID,
				Key .OrderID = order.OrderID
			}

		For Each result In query
			' Use IronPDF to dynamically add content to the PDF based on integrated data
			htmlContent &= $"<p>Customer ID: {result.CustomerID}, Order ID: {result.OrderID}</p>"
		Next result

		' Save or render the PDF document as needed
		pdfDocument.RenderHtmlAsPdf(htmlContent).SaveAs("DynamicIntegratedDataDocument.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

이 코드는 각 고객에 대한 일치하는 주문을 찾는 데 도움을 주는 join 키워드를 사용하여 쿼리를 더 간결하고 표현력 있게 만듭니다.

C# LINQ 조인 쿼리 구문(개발자용 작동 방식): 그림 3 - 이전 코드 예제에서 출력된 PDF

결론

결론적으로, IronPDF는 C# 애플리케이션에서 PDF 생성을 위한 강력한 솔루션으로 작용합니다. 강력한 LINQ Join 연산자와 결합되면 개발자는 PDF 생성 과정 전후에 원활한 데이터 통합을 달성할 수 있습니다. 고객 정보를 주문과 결합해야 하거나 다양한 출처의 데이터를 통합해야 하는 경우, LINQ Join과 IronPDF의 다이내믹 듀오는 C# 애플리케이션에서 PDF 생성 기능을 향상시키는 유연하고 효율적인 접근 방식을 제공합니다.

결론적으로, C# LINQ Join 연산자는 여러 출처에서 데이터를 원활하게 통합하기 위한 강력한 도구입니다. 데이터베이스, API 응답 또는 메모리 내 컬렉션을 다루고 있는지에 관계없이 LINQ Join 연산자는 지정된 조건에 따라 데이터를 결합하는 과정을 단순화합니다. C# 애플리케이션에서 다양한 데이터 연결 환경을 탐색하면서 LINQ Join 연산자가 데이터 통합 도구 키트에 제공하는 힘과 유연성을 고려하십시오. 이 연산자를 숙달하면 데이터를 효율적으로 작업하고 조작할 수 있는 새로운 가능성이 열리고 C# 애플리케이션의 기능이 향상됩니다.

IronPDF는 그 모든 기능을 시험할 수 있도록 평가용 무료 체험을 제공합니다. 그러나 체험 기간이 만료되면 정식 라이선스가 필요합니다.

자주 묻는 질문

C# LINQ Join 연산자의 목적은 무엇인가요?

C# LINQ Join 연산자는 지정된 조건에 따라 여러 컬렉션에서 데이터를 병합하도록 설계되었습니다. 이는 SQL 조인과 유사한 복잡한 데이터 통합을 수행할 수 있게 하여 메모리 내 데이터 조작에 큰 가치를 더합니다.

C#에서 HTML을 PDF로 변환하는 방법은 무엇인가요?

IronPDF의 RenderHtmlAsPdf 메서드를 사용하여 HTML 문자열을 PDF로 변환할 수 있습니다. 또한 RenderHtmlFileAsPdf 사용하여 HTML 파일을 PDF로 변환할 수도 있습니다.

LINQ는 어떤 유형의 조인을 지원하나요?

LINQ는 Inner Join, Left Outer Join, Group Join을 포함한 여러 종류의 조인을 지원합니다. 이러한 조인 유형은 일치하는 요소만 반환하거나 한 소스 컬렉션의 모든 요소를 포함하는 등의 다양한 데이터 통합 수준을 가능하게 합니다.

LINQ Join은 실제 세계의 시나리오에 어떻게 적용될 수 있나요?

LINQ Join은 고객 정보와 주문 데이터를 결합하는 등의 방법으로 서로 다른 소스의 데이터를 병합하는 실제 시나리오에 사용될 수 있습니다. 이러한 통합은 종합적인 데이터 분석 및 보고를 용이하게 합니다.

내 프로젝트에 PDF 생성용 C# 라이브러리를 어떻게 설치하나요?

NuGet 패키지 관리자를 통해 'IronPDF'를 검색하거나 패키지 관리자 콘솔에서 Install-Package IronPdf 명령을 사용하여 C# 프로젝트에 IronPDF를 설치할 수 있습니다.

C#에서 PDF 생성 라이브러리를 사용하는 장점은 무엇인가요?

IronPDF와 같은 라이브러리를 사용하면 다양한 데이터 소스에서 동적으로 PDF를 생성할 수 있으며, 콘텐츠의 레이아웃과 스타일을 유지합니다. 보고서, 청구서 및 기타 문서를 작성하기 위해 HTML 콘텐츠를 PDF로 변환하는 데 특히 유용합니다.

LINQ Join과 PDF 생성 라이브러리는 어떻게 함께 작동할 수 있나요?

LINQ Join을 사용하여 다양한 소스의 데이터를 통합한 후 IronPDF를 사용하여 PDF를 생성할 수 있습니다. 이 조합을 통해 종합적이고 통합된 데이터 세트를 기반으로 한 동적인 PDF 문서를 만들 수 있습니다.

PDF 생성 과정에서 LINQ Join을 사용할 수 있나요?

예, IronPDF로 PDF를 생성할 때 LINQ Join을 사용하여 데이터를 통합할 수 있습니다. 이를 통해 실시간 데이터 통합을 반영할 수 있는 동적 문서를 생성할 수 있으며, 문서 작성의 효율성과 유연성을 높입니다.

HTML에서 PDF로 변환 기능은 어떤 기능을 제공하나요?

IronPDF의 HTML에서 PDF로 변환 기능은 HTML 파일, URL 및 HTML 문자열을 PDF로 변환하면서 레이아웃과 스타일을 유지합니다. 이는 웹 콘텐츠로부터 시각적으로 일관된 PDF 문서를 생성하는 데 특히 유용합니다.

PDF 생성 라이브러리에 평가 옵션이 있나요?

예, IronPDF는 평가 목적으로 무료 체험판을 제공합니다. 체험판 기간 이후에도 라이브러리의 전체 기능에 접근하려면 적절한 라이센스가 필요합니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해