Biểu thức Lambda C# LINQ

Bieu Thuc Lambda C Linq



Biểu thức lambda trong C# trực tiếp lấy các biểu thức/câu lệnh điều kiện làm phần thân của nó mà không có tên. Chúng ta cần chỉ định các tham số và sau đó các biểu thức được gán cho nó. Trong khi làm việc với Truy vấn Tích hợp Ngôn ngữ (LINQ), bạn có thể có yêu cầu rằng bạn cần chuyển đổi dữ liệu có trong nguồn dữ liệu hoặc chuyển đổi một nguồn dữ liệu sang một nguồn dữ liệu khác. Trong hướng dẫn này, chúng ta sẽ xem cách lọc các bản ghi từ nguồn dữ liệu bằng cách chỉ định biểu thức lambda và chọn các bản ghi từ nguồn dữ liệu.

Cú pháp:

  1. Biểu thức Lambda: (tham số) => biểu thức
  2. Tuyên bố Lambda: { câu lệnh điều kiện1 câu lệnh2 … }

Ví dụ 1:

Tạo danh sách “phân bón” chứa năm chuỗi. Sử dụng biểu thức lambda trả về tất cả các chuỗi từ danh sách.

sử dụng Hệ thống ;
sử dụng Hệ thống.Linq ;
sử dụng System.Collections.Generic ;

lớp học LambdaExExExExample {

tĩnh công cộng khoảng trống Chủ yếu ( )
{

// Tạo List phân bón
Liệt kê các loại phân bón = mới Danh sách ( ) ;
phân bón . Thêm vào ( 'Urê' ) ;
phân bón . Thêm vào ( 'nitơ' ) ;
phân bón . Thêm vào ( 'kali' ) ;
phân bón . Thêm vào ( 'Phốt phát' ) ;
phân bón . Thêm vào ( 'phốt pho' ) ;

// Sử dụng LambdaExpression để chọn tất cả các loại phân bón
đã từng là kết quả = phân bón . Lựa chọn ( inp1 => inp1 ) ;
cho mỗi ( đã từng là Tôi TRONG kết quả )
{
Bảng điều khiển . ViếtDòng ( Tôi ) ;
}

}
}

Đầu ra:









Giải trình:



1. Tạo danh sách kiểu chuỗi có tên “phân bón”. Thêm năm chuỗi vào danh sách này.

2. Sử dụng biểu thức lambda để chọn tất cả các loại phân bón. Ở đây, biểu thức được sử dụng với toán tử “Chọn”. biểu thức là inp1 => inp1. Sau đó, chúng tôi sử dụng vòng lặp “foreach” để hiển thị các chuỗi được biểu thức lambda trả về.





Ví dụ 2:

Sử dụng biểu thức lambda để chọn phân bón có chứa “Phốt phát”.

sử dụng Hệ thống ;
sử dụng Hệ thống.Linq ;
sử dụng System.Collections.Generic ;

lớp học LambdaExExExExample {

tĩnh công cộng khoảng trống Chủ yếu ( )
{

// Tạo List phân bón
Liệt kê các loại phân bón = mới Danh sách ( ) ;
phân bón . Thêm vào ( 'Urê' ) ;
phân bón . Thêm vào ( 'nitơ' ) ;
phân bón . Thêm vào ( 'ortho - Photphat' ) ;
phân bón . Thêm vào ( 'Phốt phát' ) ;
phân bón . Thêm vào ( 'phốt pho' ) ;

// Sử dụng LambdaExpression để chọn loại phân bón có chứa - 'Phốt phát'
đã từng là kết quả = phân bón . Ở đâu ( inp1 => inp1 . Chứa ( 'phốt phát' ) ) ;
cho mỗi ( đã từng là Tôi TRONG kết quả )
{
Bảng điều khiển . ViếtDòng ( Tôi ) ;
}

}
}

Đầu ra:



Có hai chuỗi bao gồm 'Phốt phát' trong đó.

Giải trình:

1. Tạo danh sách kiểu chuỗi có tên “phân bón”. Thêm năm chuỗi vào danh sách này.

2. Ở đây, biểu thức được sử dụng với toán tử “Where”. biểu thức là inp1 => inp1.Contains(“Phosphate”). Sau đó, chúng tôi sử dụng vòng lặp “foreach” để hiển thị các chuỗi được biểu thức lambda trả về.

Ví dụ 3:

Hãy có một danh sách (order_quantity) chứa ba đơn đặt hàng. Chỉ định biểu thức lambda để thêm 5 vào mỗi đơn hàng.

sử dụng Hệ thống ;
sử dụng Hệ thống.Linq ;
sử dụng System.Collections.Generic ;

lớp học LambdaExExExExample {

tĩnh công cộng khoảng trống Chủ yếu ( )
{

// Tạo List số lượng
Liệt kê đơn hàng_số lượng = mới Danh sách ( ) ;
số lượng đặt hàng . Thêm vào ( 5 ) ;
số lượng đặt hàng . Thêm vào ( 7 ) ;
số lượng đặt hàng . Thêm vào ( số 8 ) ;

// Sử dụng LambdaExpression thành 5 cho mỗi đơn hàng.
đã từng là kết quả = số lượng đặt hàng . Lựa chọn ( inp1 => inp1 + 5 ) ;
cho mỗi ( đã từng là Tôi TRONG kết quả )
{
Bảng điều khiển . ViếtDòng ( Tôi ) ;
}

}
}

Đầu ra:

Danh sách [5,7,8] được chuyển thành [10,12,13].

Giải trình:

1. Tạo danh sách đại lượng kiểu Integer.

2. Chúng tôi chọn các đơn hàng trước rồi cộng 5 vào mỗi đơn hàng. Vì vậy, toán tử 'Chọn' được sử dụng. biểu thức là inp1 => inp1 + 5.

Ví dụ 4:

Tạo nguồn dữ liệu danh sách thuộc loại Sự kiện (có ba thuộc tính – Tên_sự kiện, Trạng_thái_sự_kiện và Ngân sách_sự kiện) và trả về các bản ghi có Event_Budget lớn hơn 5000.

sử dụng Hệ thống ;
sử dụng Hệ thống.Linq ;
sử dụng System.Collections.Generic ;

// Tạo một lớp có tên - 'Event_Source' với 5 sự kiện.
công cộng lớp học Sự kiện_Nguồn
{
công cộng tĩnh khoảng trống Chủ yếu ( )
{
// Danh mục sự kiện
IList sự kiện = mới Danh sách ( ) {
mới Sự kiện ( ) { Tên sự kiện = 'Trại kỹ thuật' ,Sự kiện_Status = 'Có kế hoạch' ,Sự kiện_Ngân sách = 10000 } ,
mới Sự kiện ( ) { Tên sự kiện = 'Trại tiếp thị' ,Sự kiện_Status = 'Hoàn thành' ,Sự kiện_Ngân sách = 5000 } ,
mới Sự kiện ( ) { Tên sự kiện = 'Khác' ,Sự kiện_Status = 'Có kế hoạch' ,Sự kiện_Ngân sách = 1000 } ,
mới Sự kiện ( ) { Tên sự kiện = 'Chính trị' ,Sự kiện_Status = 'Có kế hoạch' ,Sự kiện_Ngân sách = 13000 } ,
mới Sự kiện ( ) { Tên sự kiện = 'Tài chính' ,Sự kiện_Status = 'Hoàn thành' ,Sự kiện_Ngân sách = 20000 } ,
} ;

//Event_Budget lớn hơn 5000.
đã từng là kết quả = sự kiện . Ở đâu ( inp1 => inp1 . Sự kiện_Budget > 5000 ) ;
cho mỗi ( đã từng là Tôi TRONG kết quả ) {
Bảng điều khiển . ViếtDòng ( 'TÊN: ' + Tôi . Tên sự kiện + ' TRẠNG THÁI: ' + Tôi . Sự kiện_Status + ' NGÂN SÁCH: ' + Tôi . Sự kiện_Budget ) ;
}
}
}

công cộng lớp học Sự kiện {
công cộng sợi dây Tên sự kiện { lấy ; bộ ; }
công cộng sợi dây Sự kiện_Status { lấy ; bộ ; }
công cộng int Sự kiện_Budget { lấy ; bộ ; }
}

Đầu ra:

Có ba bản ghi trong danh sách 'sự kiện' với Event_Budget lớn hơn 5000.

Giải trình:

1. Đầu tiên, chúng ta tạo một lớp “Sự kiện” với ba thuộc tính.

2. Sau đó, chúng tôi tạo một danh sách gồm năm sự kiện.

3. Sử dụng inp1 => inp1.Event_Budget > 5000 lambda, chúng tôi chọn các bản ghi có Event_Budget lớn hơn 5000.

Ví dụ 5:

Sử dụng mã trước đó và thay đổi biểu thức lambda. Trả về các sự kiện có Event_Name kết thúc bằng “Trại” và với Event_Status là “Đã lên kế hoạch”.

// Biểu thức Lambda - Event_Name kết thúc bằng 'Trại' và Event_Status là 'Đã lên kế hoạch'.
đã từng là kết quả = sự kiện . Ở đâu ( inp1 => inp1 . Tên sự kiện . kết thúc với ( 'Trại' ) && inp1 . Sự kiện_Status == 'Có kế hoạch' ) ;
cho mỗi ( đã từng là Tôi TRONG kết quả ) {
Bảng điều khiển . ViếtDòng ( 'TÊN: ' + Tôi . Tên sự kiện + ' TRẠNG THÁI: ' + Tôi . Sự kiện_Status + ' NGÂN SÁCH: ' + Tôi . Sự kiện_Budget ) ;
}

Đầu ra:

Chỉ có một bản ghi thỏa mãn cả hai điều kiện.

Giải trình:

Ở đây, chúng tôi chỉ định hai điều kiện trong biểu thức lambda. Toán tử && (và) được sử dụng để biến hai điều kiện thành True. Điều kiện đầu tiên sử dụng phương thức EndsWith() để kiểm tra xem một chuỗi có kết thúc bằng chuỗi đã cho hay không. Điều kiện thứ hai sử dụng toán tử “So sánh” (==) để kiểm tra xem cả hai giá trị có bằng nhau hay không.

Phần kết luận

Trong C#, biểu thức lambda lấy các biểu thức/câu lệnh điều kiện làm phần thân của nó mà không có tên. Chúng ta cần chỉ định các tham số. Sau đó, các biểu thức được gán cho nó. Về cơ bản, chúng được sử dụng để lọc các bản ghi từ nguồn dữ liệu nhất định, biến đổi các phần tử và chọn các phần tử từ nguồn/dãy dữ liệu. Trong hướng dẫn này, chúng tôi đã thảo luận về năm ví dụ khác nhau để chọn, lọc và biến đổi các phần tử bằng cách sử dụng biểu thức lambda.